未捕获范围错误:在JavaScript中附加到字符串时字符串长度无效

未捕获范围错误:在JavaScript中附加到字符串时字符串长度无效,javascript,html,Javascript,Html,所以基本上我一直在用Javascript做一个小的个人项目,我遇到了一个障碍。我正在尝试使用Javascript从2D数组生成HTML列表。这是我的密码: function generatePageFromArray(page, array){ var entry, i, j; for (i = 0; i < array.length; ++i) { entry = array[i]; for (j = 0; j < entry.length; j = j + 2)

所以基本上我一直在用Javascript做一个小的个人项目,我遇到了一个障碍。我正在尝试使用Javascript从2D数组生成HTML列表。这是我的密码:

function generatePageFromArray(page, array){
var entry, i, j;
for (i = 0; i < array.length; ++i) {
    entry = array[i];
    for (j = 0; j < entry.length; j = j + 2) {
        page = page + '<tr>'+
                    '<td class="favoritesContainer"><input type="checkbox" class="favorites"></input></td>';
        page = page +  '<td class="english">' + entry[j,0] + '</td>';
        page = page +  '<td class="spanish">';
        if (entry[j,1].indexOf("|") > 0){
            var spanishTerms = entry[j,1].split("|");
            var strLength = spanishTerms.size;
            for (i = 0; i < strLength; i++){
                page = page.concat(spanishTerms[i] + '<br>');   
            }
        }
        else{
            page = page + entry[j,1];
        }
        page = page + '</td>'
        page = page + '</tr>';         
    }
}
return page;}
函数generatePageFromArray(第页,数组){
var分录,i,j;
对于(i=0;i');
}
}
否则{
页码=页码+条目[j,1];
}
页码=页码+“”
页码=页码+“”;
}
}
返回页;}
它不断抛出未捕获的RangeError:此行的字符串长度无效:

page = page + '<tr>'+
                    '<td class="favoritesContainer"><input type="checkbox" class="favorites"></input></td>';
page=page+''+
'';

我不知道为什么。我还尝试使用.concat()进行追加,但没有任何结果。

您的二维数组访问不正确,但主要问题是您在内部循环中使用了变量
I

for (i = 0; i < strLength; i++){
    page = page.concat(spanishTerms[i] + '<br>');   
}
我得到了这个错误:

未捕获范围错误:字符串长度无效

用i表示外for循环,用不同的j表示内for循环

外循环使用I,内循环使用I, 然后上面的错误,花了我好几个小时才发现真正的问题是2i的冲突

for (var i = 0; i < features.length; i++) {
   for (var i = 0; i < features.length; i++) {
      i;// conflict i will cause error above
   }
}
for(变量i=0;i

您必须使用j或不同的字母作为内循环

另一个
范围的来源错误:无效的字符串长度
如下示例(请尝试自己查找bug,读者的任务):

var url=”http://example.org/1";
变量url=”http://example.org/2";

对于(var i=0;它是:
entry[j,0]
的意思与
entry[0]
的意思完全相同-您打算做什么?这实际上是一个二维数组迭代…访问JavaScript中的二维数组看起来像
entry[j][0]
@axtscz不,如果你在谈论JavaScript,它们不是。如果你在谈论其他东西,你不应该用JavaScript标记这个问题。看看区别:你的建议首先启动。@axtscz我向你保证,你尝试使用的二维语法不会达到你认为的效果。
[]中的
索引被解析为JavaScript逗号运算符,这意味着索引的值将是第二个表达式的值。这就是为什么
j,1
与just
1
完全相同,
j,0
与just
0
完全相同。你看过JSFIDLE了吗?我无法解释它either@axtscz
for (var i = 0; i < features.length; i++) {
   for (var i = 0; i < features.length; i++) {
      i;// conflict i will cause error above
   }
}
var urls = "http://example.org/1";
var url = "http://example.org/2";
for(var i=0;i<100;i++) {
    urls += urls + url + "\r\n"; //on this line, the exception is thrown
}