`
lovecontry
  • 浏览: 1038356 次
文章分类
社区版块
存档分类
最新评论

[经验总结]近期JavaScript编程总结

 
阅读更多

JavaScript

转自: http://www.disandu.com/?p=603
============================================================================
1处理XSLT调用带参数的XSLT模板的方法 详见 23条
<html>
<body>
<script type="text/javascript">

// Load XML
varxml = newActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("cdcatalog.xml")

// Load XSL
varxsl = newActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("cdcatalog.xsl")

// Transform
document.write(xml.transformNode(xsl))

</script>

</body>
</html>
==========================================================================
2处理XML

一.读入XML文件
<script language="Javascript">
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
</script>

二.生成保存XML文件
<script language="javascript">
vardoc = newActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM")

//加载文档
//doc.load("b.xml");

//创建文件头
varp = doc.createProcessingInstruction("xml","version=’’1.0’’ encoding=’’gb2312’’");

//添加文件头
doc.appendChild(p);

//用于直接加载时获得根接点
//var root = doc.documentElement;

//两种方式创建根接点
//var root = doc.createElement("students");
varroot = doc.createNode(1,"students","");

//创建子接点
varn = doc.createNode(1,"ttyp","");

//指定子接点文本
//n.text = " this is a test";

//创建孙接点
varo = doc.createElement("sex");
o.text = "男"; //指定其文本

//创建属性
varr = doc.createAttribute("id");
r.value="test";

//添加属性
n.setAttribute Node(r);

//创建第二个属性
var r1 = doc.createAttribute("class");
r1.value="tt";

//添加属性
n.setAttributeNode(r1);

//删除第二个属性
n.removeAttribute("class");

//添加孙接点
n.appendChild(o);

//添加文本接点
n.appendChild(doc.createTextNode("this is a text node."));

//添加注释
n.appendChild(doc.createComment("this is a comment/n"));

//添加子接点
root.appendChild(n);

//复制接点
varm = n.cloneNode(true);
root.appendChild(m);

//删除接点
root.removeChild(root.childNodes(0));

//创建数据段
varc = doc.createCDATASection("this is a cdata");
c.text = "hi,cdata";
//添加数据段
root.appendChild(c);

//添加根接点
doc.appendChild(root);

//查找接点
vara = doc.getElementsByTagName("ttyp");
//var a = doc.selectNodes("//ttyp");

//显示改接点的属性
for(var i= 0;i<a.length;i++){
alert(a[i].xml);
for(var j=0;j<a[i].attributes.length;j++){
alert(a[i].attributes[j].name);
}
}

//XML保存(需要在服务端,客户端用FSO)
//doc.save();

//查看根接点XML
if(n){
alert(n.ownerDocument.xml);
}
</script>
==========================================================================
3JavaScript写文件:
varfs=newActiveXObject("Scripting.FileSystemObject");
varfile=fs.CreateTextFile("c://test.txt",true);
file.WriteLine("This is test text.");
file.Close();
==========================================================================
4工具函数,这样您就可以通过一个较短的名字来使用 getElementById()方法
functionid(x){
if(typeofx == "string")returndocument.getElementById(x);
returnx;
}
==========================================================================
5
语法
document.getElementsByName(name)
该方法与 getElementById()方法相似,但是它查询元素的 name 属性,而不是 id 属性。
另外,因为一个文档中的 name 属性可能不唯一(如 HTML 表单中的单选按钮通常具有相同的 name 属性),所有 getElementsByName()方法返回的是元素的数组,而不是一个元素。
==========================================================================
6
语法
document.getElementById(id)
说明
HTML DOM 定义了多种查找元素的方法,除了 getElementById()之外,还有 getElementsByName()和 getElementsByTagName()。
不过,如果您需要查找文档中的一个特定的元素,最有效的方法是 getElementById()。
在操作文档的一个特定的元素时,最好给该元素一个 id 属性,为它指定一个(在文档中)唯一的名称,然后就可以用该 ID 查找想要的元素。
==========================================================================
7
语法
document.getElementsByTagName(tagname)
说明
getElementsByTagName()方法返回元素的顺序是它们在文档中的顺序。
如果把特殊字符串 "*"传递给 getElementsByTagName()方法,它将返回文档中所有元素的列表,元素排列的顺序就是它们在文档中的顺序。
提示和注释
注释:传递给 getElementsByTagName()方法的字符串可以不区分大小写。

varx=document.getElementsByTagName("p");
for(vari=0;i<x.length;i++)
{
// do something with each paragraph
}
==========================================================================
8Root根节点
有两种特殊的文档属性可用来访问根节点:
document.documentElement
document.body
第一个属性可返回存在于 XML 以及 HTML 文档中的文档根节点。

第二个属性是对 HTML 页面的特殊扩展,提供了对 <body> 标签的直接访问。
==========================================================================
9节点信息
每个节点都拥有包含着关于节点某些信息的属性。这些属性是:
nodeName (节点名称)
nodeValue(节点值)
nodeType (节点类型)
==========================================================================
10nodeName
nodeName 属性含有某个节点的名称。
元素节点的 nodeName 是标签名称
属性节点的 nodeName 是属性名称
文本节点的 nodeName 永远是 #text
文档节点的 nodeName 永远是 #document
注释:nodeName 所包含的 XML 元素的标签名称永远是大写的
==========================================================================
11获得元素的文本值 两种方法
//IE不支持下面这行,Chrome与Firefox通过。
varx = document.getElementById("frame1").contentDocument;

alert(x.getElementById("exam_time").childNodes[0].nodeValue);

alert(x.getElementById("exam_time").innerHTML);


==========================================================================
12iframe
创建: <iframe src="http://www.baidu.com"id="frame1"name="frame1"frameborder="0"height="200"width="200"framespace="0"marginheight="0"marginwidth="0"scrolling="no"></iframe>


1> 滑动边框
2>
==========================================================================
13String对象

http://www.w3school.com.cn/js/jsref_obj_string.asp
==========================================================================
14分析URL中的参数
varparam = newObject();
varurl = document.URL;
varstrData;
varstrStyle;

alert(url);
varbNonePaper = true;
if(url != "")
{
idx = url.indexOf("?");
if(idx != -1)
{
varstr = url.substr(idx+1);//去掉?号
alert(str);
strs = str.split("&");
for(vari = 0; i < strs.length; i++)
{
param[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
}
}

strData = param["totalNum"];
strStyle = param["rightNum"]
alert(strData);
}

==========================================================================
15播放Flash

---------------------------------------
1.5版本用法:
// swfobject 1.5 注意不能用swfobject 2.0+
// http://www.adobe.com/devnet/flashplayer/articles/swfobject.html
varso = newSWFObject("bye.swf", "sotester", "100%", "100%", "8", "#FF6600");
so.addVariable("flashVarText", "this is passed in via FlashVars for example only");
so.addParam("scale", "noscale");
so.write("flash");
---------------------------------------
中文文档
1.5版http://www.awflasher.com/flash/articles/swfobj.htm

官方文档 http://code.google.com/p/swfobject/wiki/documentation
----------------
2.2版本用法示例:
<script type="text/javascript">
// file: mp3文件 divName: 待写入div的id
functionplayAudio(file, divName){
try{
arg1 = "res/singlemp3player.swf?file="+file;
// swfobject.embedSWF(arg1, divName, "300", "18", "9.0.0", "singlemp3player.swf");

varflashvars = true;

varparams = {
menu: "true",
wmode: "Transparent",
};

varattributes = {
id: "myDynamicContent",
name: "myDynamicContent"
};

swfobject.embedSWF(arg1, divName, "300", "18", "9.0.0","expressInstall.swf", flashvars, params, attributes);

alert("haha1");
}
catch(error){
alert(error.name);
alert(error.description);

}
}

playAudio("1.mp3", "myContent");
alert("haha");
</script>

----------------
==========================================================================
16弹出窗口
/*
* 打开新窗口
* f:链接地址
* n:窗口的名称
* width:窗口的宽度
* height:窗口的高度
* s:窗口是否有滚动条,1:有滚动条;0:没有滚动条
*/
functionopenWin(f,n,width,height,s){
sb = s == "1"? "1": "0";
l = (screen.width - width)/2;
t = (screen.height - height)/2;
sFeatures = "left="+ l +",top="+ t +",height="+ height +",width="+ width
+ ",center=1,scrollbars="+ sb + ",status=0,directories=0,channelmode=0";
openwin = window.open(f , n , sFeatures );
if(!openwin.opener)
openwin.opener = self;
openwin.focus();
returnopenwin;
}

==========================================================================
17出错处理
1》 异常
try

{

alert(parent.document);

}

catch(error){
errMsg = error.name + ": "+ error.message;
alert(errMsg);
// alert(error.name);
// alert(error.message);
}
-------------------------------------
2》错误处理
// Display error messages in a dialog box, but never more than 3
window.onerror = function(msg, url, line){
if(onerror.num++ < onerror.max){
alert("ERROR: "+ msg + "/n"+ url + ":"+ line);
returntrue;
}
}

==========================================================================
18请教如何改变网页背景音乐的曲目

functionplaymusicfile(musicfile)
{
varobjMusic = document.getElementById("bgmusic");
varparEle = objMusic.parentNode;
parEle.removeChild(objMusic);
// objMusic.src= musicfile;

varnewEle = document.createElement("embed");
newEle.setAttribute("id","bgmusic");
newEle.src=musicfile;
newEle.setAttribute("hidden","true");
newEle.setAttribute("autostart","true");
parEle.appendChild(newEle);
}


这样可以解决。
==========================================================================
19正则表达式 替换时 注意判空, 不然会造成 IE8中未知错误。
//正则表达式匹配样式
functionrexCSS()
{
varobjs = document.getElementsByTagName("P");
if(!objs)
{
return;
}
for(i=0; i<objs.length; i++)
{
if(objs[i].innerHTML.indexOf("<img")== -1&&
objs[i].innerHTML.indexOf("<IMG")== -1)
{
varstr = objs[i].innerHTML;

try{
if(str.length != 0)
objs[i].innerHTML = str.replace(/[/u4E00-/u9FA5]+/g, "<span class = 'CNStyle'>$&</span>");
}
catch(eee)
{
alert(eee.message);
alert(objs[i].innerHTML);
}
}
}
}
==========================================================================
20jQuery Mp3播放器
/*********************************************************************
*jMP3 v0.2.1 - 10.10.2006 (w/Eolas fix & jQuery object replacement)
* an MP3 Player jQuery Plugin (http://www.sean-o.com/jquery/jmp3)
* by Sean O
* Download by http://www.jb51.net
* An easy way make any MP3 playable directly on most any web site (to those using Flash & JS),
* using the sleek Flash Single MP3 Player & the fantabulous jQuery.
*********************************************************************/

************************************************************************
应用代码:
// file: mp3文件 divName: 待写入div的id
functionplayAudio(file, divName){
try{
arg1 = "res/singlemp3player.swf?file="+file;
// swfobject.embedSWF(arg1, divName, "300", "18", "9.0.0", "singlemp3player.swf");

varflashvars = true;

varparams = {
menu: "true",
wmode: "Transparent",
};

varattributes = {
id: "myDynamicContent",
name: "myDynamicContent"
};

swfobject.embedSWF(arg1, divName, "300", "18", "9.0.0","expressInstall.swf", flashvars, params, attributes);

alert("haha1");
}
catch(error){
alert(error.name);
alert(error.description);

}
}

playAudio("1.mp3", "myContent");

************************************************************************

http://www.sean-o.com/jquery/jmp3/
==========================================================================
21下面这种情况会导致div写两次
<div id="1">
<script type="text/javascript">
playAudio("1.mp3", "1");
</script>
</div>

==================================================================
22JS处理 XML

一.读入XML文件
<script language="Javascript">
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
</script>

二.生成保存XML文件
<script language="javascript">
vardoc = newActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM")

//加载文档
//doc.load("b.xml");

//创建文件头
varp = doc.createProcessingInstruction("xml","version=’’1.0’’ encoding=’’gb2312’’");

//添加文件头
doc.appendChild(p);

//用于直接加载时获得根接点
//var root = doc.documentElement;

//两种方式创建根接点
//var root = doc.createElement("students");
varroot = doc.createNode(1,"students","");

//创建子接点
varn = doc.createNode(1,"ttyp","");

//指定子接点文本
//n.text = " this is a test";

//创建孙接点
varo = doc.createElement("sex");
o.text = "男"; //指定其文本

//创建属性
varr = doc.createAttribute("id");
r.value="test";

//添加属性
n.setAttributeNode(r);

//创建第二个属性
var r1 = doc.createAttribute("class");
r1.value="tt";

//添加属性
n.setAttributeNode(r1);

//删除第二个属性
n.removeAttribute("class");

//添加孙接点
n.appendChild(o);

//添加文本接点
n.appendChild(doc.createTextNode("this is a text node."));

//添加注释
n.appendChild(doc.createComment("this is a comment/n"));

//添加子接点
root.appendChild(n);

//复制接点
varm = n.cloneNode(true);
root.appendChild(m);

//删除接点
root.removeChild(root.childNodes(0));

//创建数据段
varc = doc.createCDATASection("this is a cdata");
c.text = "hi,cdata";
//添加数据段
root.appendChild(c);

//添加根接点
doc.appendChild(root);

//查找接点
vara = doc.getElementsByTagName("ttyp");
//var a = doc.selectNodes("//ttyp");

//显示改接点的属性
for(var i= 0;i<a.length;i++){
alert(a[i].xml);
for(var j=0;j<a[i].attributes.length;j++){
alert(a[i].attributes[j].name);
}
}

//XML保存(需要在服务端,客户端用FSO)
//doc.save();

//查看根接点XML
if(n){
alert(n.ownerDocument.xml);
}
</script>

=========================================================================
23XML操作xmlHelper.js
http://www.google.cn/codesearch/p?hl=zh-CN#5zTQZzprFTc/trunk/static/media/javascript/xmlHelper.js&q=transformNode%20XsltArg%20lang:javascript&sa=N&cd=1&ct=rc&l=134
functionparseXML(text)
{
varxmlDoc = null;

try//Internet Explorer
{
xmlDoc=newActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(text);
}
catch(e)
{
try// Firefox, Mozilla, Opera, etc.
{
parser=newDOMParser();
xmlDoc=parser.parseFromString(text,"text/xml");
}
catch(e)
{
alert(e.message);
//return;
}
}

returnxmlDoc;
}

functionloadXMLFile(fname)
{
varxmlDoc;

// code for IE
if(window.ActiveXObject)
{
xmlDoc = newActiveXObject("MSXML2.FreeThreadedDomDocument");
//xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
}
// code for Mozilla, Firefox, Opera, etc.
elseif(document.implementation
&& document.implementation.createDocument)
{
xmlDoc=document.implementation.createDocument("","",null);
}
else
{
alert('Your browser cannot load xml files.');
}
xmlDoc.async = false;
xmlDoc.load(fname);
returnxmlDoc;
}


functiontransformXml(xmlDoc, xlstDoc, outputDivID)
{
//xml=loadXMLDoc("cdcatalog.xml");
//xsl=loadXMLDoc("cdcatalog.xsl");

//var returnText;

// code for IE
if(window.ActiveXObject)
{
varex = xmlDoc.transformNode(xlstDoc);
outputDiv.innerHTML=ex;
//alert(ex);
//returnText = ex;
}
// code for Mozilla, Firefox, Opera, etc.
elseif(document.implementation
&& document.implementation.createDocument)
{
varxsltProcessor=newXSLTProcessor();
xsltProcessor.importStylesheet(xlstDoc);
varresultDocument = xsltProcessor.transformToFragment(xmlDoc,document);
//returnText = resultDocument;
varoutputDiv = document.getElementById(outputDivID);

// Clear current results and add new results
while(outputDiv.childNodes.length >= 1){
outputDiv.removeChild(outputDiv.firstChild);
}
outputDiv.appendChild(resultDocument);
}

//return returnText;
}


// Params:
//- xsltArgs: an array of objects with obj.name and obj.value properties
functiontransformXmlWithArgs(xmlDoc, xsltDoc, xsltArgs, outputDiv)
{
//xml=loadXMLDoc("cdcatalog.xml");
//xsl=loadXMLDoc("cdcatalog.xsl");

//var returnText;

// code for IE
if(window.ActiveXObject)
{
vartemplate = newActiveXObject("MSXML2.XSLTemplate");
template.stylesheet = xsltDoc;
varproc = template.createProcessor();
proc.input = xmlDoc;
if(xsltArgs != null){
for(vari=0;i<xsltArgs.length;i++){
varparam = xsltArgs[i];
proc.addParameter(param.name,param.value,"");
}
}
proc.transform();
varex = proc.output;
//var ex = xmlDoc.transformNode(xsltDoc);
outputDiv.innerHTML=ex;
//alert(ex);
//returnText = ex;
}
// code for Mozilla, Firefox, Opera, etc.
elseif(document.implementation
&& document.implementation.createDocument)
{

varxsltProcessor=newXSLTProcessor();
xsltProcessor.importStylesheet(xsltDoc);

if(xsltArgs != null){
for(vari=0;i<xsltArgs.length;i++){
varparam = xsltArgs[i];
xsltProcessor.setParameter("", param.name, param.value);
}
}
/*
for(xsltArg in xsltArgs)
{
xsltProcessor.setParameter("", xsltArg.name, xsltArg.value);
//xsltProcessor.setParameter("", xsltArg, xsltArgs[xsltArg]);
}*/

resultDocument = xsltProcessor.transformToFragment(xmlDoc,document);
//returnText = resultDocument;
//alert(resultDocument);
outputDiv.appendChild(resultDocument);
}

//return returnText;
}

=========================================================================
24全面介绍javascript异常处理(trycatchfinallywindow.onerror)

http://snap.oncoding.cn/javascript/base/article200907/216.html

=========================================================================
25对象与 数组
varxsltParam = newObject();
xsltParam.name = "propertyFile";
xsltParam.value = "Property.XML";

varargArray = newArray();
argArray[0]= xsltParam;
=========================================================================
26一些莫名其妙的脚本错误是文本编码造成的,最好将编码统一改成utf-8

分享到:
评论

相关推荐

    javaScript函数式编程

    JavaScript 是近年来非常受瞩目的一门编程语言,它既支持面向对象编程,也支持函数式编程。本书专门介绍JavaScript函数式编程的特性。 全书共9章,分别介绍了JavaScript函数式编程、一等函数与Applicative编程、变量...

    一站式编程学习网站,包括Java、Python、HTML、JavaScript 内含学习路线,文档,个人总结,面试经验.zip

    内含学习路线,官方文档,个人总结,面试经验,旨在编程学习从0到1一站式学习 一站式编程学习网站,涵盖前后端、运维,包括但不限于Java、Python、Go、HTML、JavaScript、TypeScript、Git、Docker、k8s。内含学习...

    初学者的编程逻辑

    千锤百炼之后,终于总结出了一整套从零开始的贯穿始终的编程逻辑,特别适合初学者进入程序员的殿堂,也能帮助有一定经验的程序员快速编写代码。 这是一本真正告诉初学者如何通过推理进行编程的书,而不是介绍语法的...

    快意编程EXT JS Web开发技术详解.part1

     《快意编程:Ext JS Web开发技术详解》是笔者在多年项目开发过程中的经验总结,它通过丰富的实例由浅入深、循序渐进地介绍了目前采用Ext JS进行Web开发的使用方法,从而帮助软件设计人员快速掌握Ext JS开发技术的...

    快意编程EXT JS Web开发技术详解.part3

     《快意编程:Ext JS Web开发技术详解》是笔者在多年项目开发过程中的经验总结,它通过丰富的实例由浅入深、循序渐进地介绍了目前采用Ext JS进行Web开发的使用方法,从而帮助软件设计人员快速掌握Ext JS开发技术的...

    一站式编程学习网站,涵盖前后端、运维 .zip

    内含学习路线,官方文档,个人总结,面试经验,旨在编程学习从0到1一站式学习。.zip 一站式编程学习网站,涵盖前后端、运维,包括但不限于Java、Python、Go、HTML、JavaScript、TypeScript、Git、Docker、k8s。内含...

    快意编程EXT JS Web开发技术详解.part2

     《快意编程:Ext JS Web开发技术详解》是笔者在多年项目开发过程中的经验总结,它通过丰富的实例由浅入深、循序渐进地介绍了目前采用Ext JS进行Web开发的使用方法,从而帮助软件设计人员快速掌握Ext JS开发技术的...

    快意编程 EXT JS Web开发技术详解.pdf

    《快意编程:Ext JS Web开发技术详解》是笔者在多年项目开发过程中的经验总结,它通过丰富的实例由浅入深、循序渐进地介绍了目前采用Ext JS进行Web开发的使用方法,从而帮助软件设计人员快速掌握Ext JS开发技术的使用...

    动态函数式语言精髓 与编程实践

    不仅仅适用初学者,书中有很多年编程积累下来总结的经验,可以授业,解惑

    浅谈JavaScript异步编程

    但是由于实践经验少,没有办法理解的太多,太理论的东西也往往是看完就忘。 经过公司的三两个项目的锻炼,终于对js异步编程有了比较具体的理解。但始终入门较浅,在这里就当是给自己一个阶段性的总结。 在异步编程中...

    Tcl_TK编程权威指南pdf

    因此,我就总结了一套编程技巧以充分利用Tcl/Tk的强大功能,同时回避一些棘手的问题。这本书就是一本帮助你最大限度地利用Tcl/Tk并回避一些我所经历过的令人头痛的问题的实用编程指南。 我接触Tcl语言大概已经有10...

    javascript 分号总结及详细介绍

    javascript每条语句都是以分号结束,但由于javascript具有分号自动插入规则,所有不同的编程人员有不同的习惯,有的加分号,有的不加分号,那么到底加分号好还是不加分号好?本文章向大家探讨javascript每条语句该不...

    Javascript this 的一些学习总结

    1.1.1 摘要 相信有C++、C#或Java等编程经验的各位,对于this关键字再熟悉不过了。由于Javascript是一种面向对象的编程语言,它和C++、C#或Java一样都包含this关键字,接下来我们将向大家介绍Javascript中的this...

    JavaScript脚本性能优化注意事项

    本文总结了我在JavaScript编程中所找到的提高JavaScript运行性能的一些方法,其实这些经验都基于几条原则

    javascript实用方法总结

    比如this指针、作用域、原型啦,涉及的都是一些有利于平时开发时简化代码,提高执行效率,或者说可以当做一种经验方法来使用,篇幅都不长,小步快跑的让你阅读完整篇文章,体验编程的快乐。  获取两个区间之内...

    软件开发经验(apk)

    7、Javascript的学习经验 8、Html的学习经验 无论您是在校大学生,还是职业学员,或者软件开发人员,如果你想了解更多的软件开发技术,想学习更多的软件技术,本书就志在全面提高您的软件编程思想和开发实力,使...

    ASP.NET编程之道.part1.rar

    第1篇 编程经验与感悟篇 第1章 编程感悟6则 感悟01 程序员的成长之路 感悟02 程序员应具备的素质 感悟03 程序员的必备技能 感悟04 程序员的认识误区 感悟05 程序员的生涯规划 感悟06 未来IT发展趋势 第2章 编程经验...

Global site tag (gtag.js) - Google Analytics