有没有大佬帮忙看一下这个js代码,图片中用红圈圈起来的的alert输出为啥前面带了好多逗号?

alert那里输出的就会前面带好几个逗号,我后来将数组中的元素放入字符串这些逗号才消失,一直不明白这些逗号哪来的

因为你的name为fruit的checkbox有8个,所以check是一个数组。假设当前处理的是第i个checkbox,并且你选中了它,那在为tex[i]赋值时,会将数组tex的长度扩展到i+1,前i个元素的值是null(或undefined)或先前你赋的值(如果在第i个checkbox前你还选择了其它checkbox),第i+1个元素的值就是第i个checkbox的value。而当你将tex数组转换成字符串输出时,默认的行为实际上是用逗号分隔tex的各元素来格式化,以形成字符串。这样,如果某个元素是null,就只会有一个逗号。如果你选中了后4个checkbox,那形成的数组tex的长度就是8,前4个元素是null(或undefined),当将tex转换成字符串时,默认行为就会导致转换成的字符串前面出现4个逗号,而后面是用逗号分隔的、你选择的checkbox的value。而如果用tex.join(" ")将tex转换成字符串,实际上形成的字符串前面还是有4个空格的,只不过是用空格取代了逗号。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-24
图片看不清,这种写法是把前面的of***当成一个对象,然后给一个对象绑定响应事件,固定写法就是这样。如果你的function有名字比如function test1(){ //8888888888 } 那么可以写of***.onclick=test1; 这样,不知道你理解了吗?匿名的函数就是要这样写的。
第2个回答  2020-05-26
tex[i]=cheke[i].value 改写为:tex=cheke[i].value
第3个回答  2020-05-27

简而言之:因为你给数组赋值时是按下标来的,所以有部分下标对应的值为空。

规范做法:用 tex.push() 向数组中追加值,即可避免这种问题。

相似回答