Javascript语法-为什么函数不能识别已声明和填充的外部数组
javascript syntax - why function does not recognize an outside array that is declared and filled
我在下面写的函数包含数组arr和barr来存储DOM调用,以减少DOM遍历。它现在可以工作,但是我想在其他函数中重用这些数组,所以我试图将数组声明和for循环移到函数之外,当它到达第一个引用aarr[I]时,函数出错,好像函数不识别aarr[]。我知道"var"会给范围,但我试着删除/包括var,它仍然不起作用。
请解释
TIA
当在函数内部声明aarr[](编辑为包含for循环的结束标记)
function display (namearr, current) {
var aarr = [];
var barr = [];
for (var z=1; z<=10; z++) {
c = z-1;
aarr[c] = document.getElementById("a"+z);
barr[c] = document.getElementById("b"+z);
}
var tldstr = document.getElementById("dlist").innerHTML;
tldstr = tldstr.slice(0, -1)
var tldarr = tldstr.split(",");
index = current - 1;
var arrlen = tldarr.length;
var img = "<img src='../loader1.gif' alt='loading' width='40' />";
for (i=0; i<10; i++){
if (index >= arrlen) {
aarr[i].className = "tldn";
barr[i].className = "tldn";
}
else if ( tldarr[index] == "n" || tldarr[index].length != 6)
{
aarr[i].innerHTML = img;
barr[i].innerHTML = img;
}//close first elseif
else {
tldstr = tldarr[index];
aarr[i].className = "tld"+tldstr.charAt(0);
barr[i].className = "tld"+tldstr.charAt(1);
}//close second elseif
index++;
}//close first for loop
}
这不起作用(无论是否使用"var"声明),函数在第一次遇到aarr[i]时出错
var aarr = [];
var barr = [];
for (var z=1; z<=10; z++) {
c = z-1;
aarr[c] = document.getElementById("a"+z);
barr[c] = document.getElementById("b"+z);
function display (namearr, current) {
.
.
.
aarr[i].className = "tldn"; //function errors out at first encounter of aarr[i]
.
.
.
}
您还将循环移到了函数外部。这可能行不通,因为这意味着您的getElementById
在加载脚本时运行。DOM树没有被构造,所以getElementById
返回null
。
我不认为这是一个问题与变量范围,但与您的索引。我不能从这个例子中完全弄清楚index
和current
应该是什么,但无论哪种方式,如果在dom准备好之前运行for循环,那么你的数组显然是空的,索引将被打乱。
相关文章:
- 如何设置html元素填充的动画
- 如何使用jquery在填充自动完成的值后使文本框只读
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 如何通过ajax刷新JSF填充的javascript变量
- 直接在函数声明上使用function.prototype.bind
- 用与线条相同的颜色填充多折线图上的点
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 获取HTML属性中CSS声明的值
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 用我的json数据填充JQuery DataTable
- 使用 jQuery 检查所有值是否为空或已填充
- 对API数据使用声明性绑定
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- 可以Resharper在我的javascript函数声明中添加分号
- 如何让typeahead在我的搜索栏中填充自定义参数
- 如何使用JSON字符串中的jQuery填充下拉框
- JavaScript + SVG :当它在样式之外声明时获取填充
- 填充变量时避免先声明变量
- Javascript语法-为什么函数不能识别已声明和填充的外部数组
- 在Javascript中声明和填充多维数组的有效方法