Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无效的字符串长度/分配大小重载JavaScript_Javascript_Jquery_Arrays_String - Fatal编程技术网

无效的字符串长度/分配大小重载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

我有一系列复选框,检查它们是否已被选中,如果已被选中,则向数组中添加一个字符串。然后我循环遍历字符串数组,并将数组中的字符串添加到一个由逗号分隔的新字符串中。不幸的是,这总是导致错误。在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 ";
}
//编译兴趣列表
兴趣=新数组();
如果($(($)输入[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 ";