我有一系列复选框,检查它们是否已被选中,如果有,则将字符串添加到数组中。然后我循环遍历字符串数组,并将数组中的字符串添加到以逗号分隔的新字符串中。不幸的是,这总是会导致错误。在 Chrome 中,控制台显示“无效的字符串长度”。在 Firefox 中,错误显示为“分配大小溢出”。
JavaScript:
// Compile List of Interests
interests = new Array();
if ( $("input[name=interestRoofing]").is(':checked') == true ) interests.push("Roofing");
if ( $("input[name=interestSiding]").is(':checked') == true ) interests.push("Siding");
if ( $("input[name=interestGutters]").is(':checked') == true ) interests.push("Gutters");
if ( $("input[name=interestWindows]").is(':checked') == true ) interests.push("Windows");
if ( $("input[name=interestPaint]").is(':checked') == true ) interests.push("Exterior Paint");
interestsString = "";
for ( i = 0; i < interests.length; i++ ) { // "Invalid String Length" in Chrome on This Line
interestsString = interestsString + interests[i]; // "Allocation Size Overload" in Firefox on This Line
if ( i < interests.length - 2 ) interestsString += ", ";
if ( i = interests.length - 2 ) interestsString += "and ";
}
HTML:
<p>Interested In:</p>
<p><input type="checkbox" name="interestRoofing" value="">Roofing</p>
<p><input type="checkbox" name="interestSiding" value="">Siding</p>
<p><input type="checkbox" name="interestGutters" value="">Gutters</p>
<p><input type="checkbox" name="interestWindows" value="">Windows</p>
<p><input type="checkbox" name="interestPaint" value="">Exterior Paint</p>
我确信无论发生什么问题,当我看到它时都会打我的脸,但我已经整天坐在这个问题上,还没有找到解决方案。显然这里有一些我没有看到的东西。任何帮助将非常感激。奇怪的是,Internet Explorer 中的控制台没有输出任何内容,就好像没有发生任何问题一样。 我可以通过在 for 循环检查的开头添加 if 语句以确保数组的长度不为 0 来消除 Chrome 的无效字符串长度错误。但是,Firefox 中的错误仍然存在,因此这不能是解决方案.
最佳答案
if ( i = interests.length - 2 ) interestsString += "and ";
您正在这里做作业。您可能是想进行比较。
关于javascript - 无效的字符串长度/分配大小重载 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25586981/