function creAd(){
var abs=document.getElementsByTagName("abbr");
if(abs.length<1) return false;
var abbes=new Array();
for(var i=0;i<abs.length;i++){
var tit=abs[i].getAttribute("title");
var des=abs[i].lastChild.nodeValue;
abbes[des]=tit;
}
var cdl=document.createElement("dl");
for(des in abbes){
var tit1=abbes[des];
var cdt=document.createElement("dt");
var cdt_text=document.createTextNode(des);
cdt.appendChild(cdt_text);
var cdd=document.createElement("dd");
var cdd_text=document.createTextNode(tit1);
cdd.appendChild(cdd_text);
cdl.appendChild(cdt);
cdl.appendChild(cdd);
}
document.getElementsByTagName("body")[0].appendChild(cdl);
}
window.onload=creAd;
这段代码
在第一个for循环里var des声明的变量,然后怎么在第二个for循环des就可以正常用了?跟java语言差这么大
var abs=document.getElementsByTagName("abbr");
if(abs.length<1) return false;
var abbes=new Array();
for(var i=0;i<abs.length;i++){
var tit=abs[i].getAttribute("title");
var des=abs[i].lastChild.nodeValue;
abbes[des]=tit;
}
var cdl=document.createElement("dl");
for(des in abbes){
var tit1=abbes[des];
var cdt=document.createElement("dt");
var cdt_text=document.createTextNode(des);
cdt.appendChild(cdt_text);
var cdd=document.createElement("dd");
var cdd_text=document.createTextNode(tit1);
cdd.appendChild(cdd_text);
cdl.appendChild(cdt);
cdl.appendChild(cdd);
}
document.getElementsByTagName("body")[0].appendChild(cdl);
}
window.onload=creAd;
这段代码
在第一个for循环里var des声明的变量,然后怎么在第二个for循环des就可以正常用了?跟java语言差这么大
声明变量不写var也可以 是全局变量
每次都直接 var 就可以 不觉的会对你有干扰
想跨函数的话 不用var 申明 直接赋值
for(var i = 0 , len = 10; i < len; i++){
do something....
};
每次都直接 var 就可以 不觉的会对你有干扰
你的意思是每次都var 然后2个循环内同名的变量当成是2个不同的变量吗?
每次都直接 var 就可以 不觉的会对你有干扰
你的意思是每次都var 然后2个循环内同名的变量当成是2个不同的变量吗?for(var i=0.....for(var i=0.....直接声明 直接初始化 直接用 我不觉得 这样会发生问题
在合适的地方 声明 和初始化 不要初始化和使用 没有var 显式声明的变量
如果一个变量 是全局的 那么 我会在全局声明定义
比如 window.kk={} window.kk.name='';
使用就 alert(window.kk.name)
不要觉得这样麻烦 这样会减少很多问题
简单的说,你在声明一个变量时如果没有加上var ,那么这个变量将会被默认的作为window对象的一个属性。
例如:
y=10;
'y' in window===true;