未捕获的RangeError:在JavaScript中附加到字符串时无效的字符串长度

axt*_*scz 3 javascript html5

所以基本上我一直在使用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;}
Run Code Online (Sandbox Code Playgroud)

它不断抛出一个Uncaught RangeError:此行上的字符串长度无效:

page = page + '<tr>'+
                    '<td class="favoritesContainer"><input type="checkbox" class="favorites"></input></td>';
Run Code Online (Sandbox Code Playgroud)

我不知道为什么.我也试过使用.concat()来追加,但没有.

Poi*_*nty 12

您的二维数组访问不正确,但主要问题是您i在内循环中重用变量:

for (i = 0; i < strLength; i++){
    page = page.concat(spanishTerms[i] + '<br>');   
}
Run Code Online (Sandbox Code Playgroud)

ii你的外循环相同.因此,您得到的错误告诉您,您正在构建一个超出运行时系统容量的大型字符串.为该循环声明一个新变量.

从数组数组中访问值需要两组[ ]:

entry[j][0]
Run Code Online (Sandbox Code Playgroud)

  • @axtscz不,他们不是,如果你在谈论JavaScript.如果您正在谈论其他内容,则不应使用JavaScript标记标记问题. (3认同)