无效的字符串长度/分配大小重载JavaScript
我有一系列复选框,检查它们是否已被选中,如果已被选中,则向数组中添加一个字符串。然后我循环遍历字符串数组,并将数组中的字符串添加到一个由逗号分隔的新字符串中。不幸的是,这总是导致错误。在Chrome中,控制台显示“无效字符串长度”。在Firefox中,错误显示为“分配大小溢出” JavaScript:无效的字符串长度/分配大小重载JavaScript,javascript,jquery,arrays,string,Javascript,Jquery,Arrays,String,我有一系列复选框,检查它们是否已被选中,如果已被选中,则向数组中添加一个字符串。然后我循环遍历字符串数组,并将数组中的字符串添加到一个由逗号分隔的新字符串中。不幸的是,这总是导致错误。在Chrome中,控制台显示“无效字符串长度”。在Firefox中,错误显示为“分配大小溢出” JavaScript: // Compile List of Interests interests = new Array(); if ( $("input[name=interestRoofing]").is(':c
// 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 ";
}
//编译兴趣列表
兴趣=新数组();
如果($(($)输入[name=interestrofing]).is(':checked')==true)interests.push(“屋顶”);
如果($(($)输入[name=interestSiding]).is(':checked')==true)interests.push(“Siding”);
if($(($)input[name=interestGutters]).is(':checked')==true)interests.push(“水槽”);
如果($(($)输入[name=interestWindows]).is(':checked')==true)interests.push(“Windows”);
如果($(($)输入[name=interestPaint]).is(':checked')==true)interest.push(“外部绘制”);
利息字符串=”;
对于(i=0;i
HTML:
对以下内容感兴趣:
屋顶
侧线
排水沟
窗户
外墙涂料
我敢肯定,无论发生什么问题,当我看到它的时候,都会给我一记耳光,但我整天都坐在这个问题上,还没有想出解决办法。显然这里有些东西我没看到。任何帮助都将不胜感激。奇怪的是,InternetExplorer中的控制台没有吐出任何东西,就好像没有出什么问题一样。
我可以通过在for循环检查的开头添加if语句来消除无效字符串长度错误,以确保数组的长度不是0。但是,Firefox中的错误仍然存在,因此这肯定不是解决方案
if ( i = interests.length - 2 ) interestsString += "and ";
你在这里做作业。你可能是想比较。我会尝试
interests=[]
而不是newarray()
代码似乎是正确的。它可能与代码的其余部分有关。请检查其余的代码。由于某种原因,应始终使用var
声明变量,[]而不是new Array()清除了错误。但是new Array()是正确的语法,不是吗?不过谢谢你。感谢您的帮助。使用数组文字,[]实际上要快一点。所有现代JS虚拟机都理解[]的意思是“新数组文字”。当您使用“new Array()”时,由于数组构造函数重载,它需要额外的几个周期。简而言之,您应该使用[],而不是new Array()。我找到了一个很好的答案。是的。我也错过了那个。。没有==
这是一个无限循环。哦,上帝,是的,它工作得很好!果然,它击中了我的脸。将来当我遇到这个错误时,我会知道它是什么。我几乎希望我能早点把这个问题贴出来,但我真的不着急。我还有几个星期就要交密码了。我真的很感谢你的帮助,你不知道。谢谢,谢谢,谢谢!我很高兴能帮上忙。请记住标记答案或对那些有助于解决问题的答案进行投票。(即使不是我的!)保重!
if ( i = interests.length - 2 ) interestsString += "and ";