返回值数组的Javascript函数

时间:2015-08-31 14:10:41

标签: javascript jquery arrays

此函数从表中读取当前选定的值,我无法在此函数外部的单个数组中获取它们的列表。

function getcheckboxed() {
vartoberead = [];
$("input:checkbox[name=test]:checked").each(function(){
    vartoberead [vartoberead .length] = $(this).val();
     console.log($(this).val(), vartoberead);
     return vartoberead;
});

我已经宣布 vartoberead ,无论是在内部还是在函数外部,都尝试过:

var myoutsidevar = getcheckboxed();

但总是返回

  

[未定义]

感谢每一位帮助

6 个答案:

答案 0 :(得分:7)

你可以稍微缩短一点:

var values = $("input:checkbox[name=test]:checked").map(function() {
    return this.value;
}).get();

编辑:要使其成为一个函数并返回:

function getcheckboxed() { 
    return $("input:checkbox[name=test]:checked").map(function() {
        return this.value;
    }).get();
}

答案 1 :(得分:2)

您可以使用地图:

var vartoberead = $("input:checkbox[name=test]:checked").map(function(){
      return $(this).val();
});

map()确实会返回一些东西,所以你不需要推送到一个数组,而只是让jQuery用返回的值为你填充数组。

答案 2 :(得分:0)

你应该在return周期之后each()(而不是在你正在做的周期内),你还可以使用serializeArray

function getcheckboxed() {
   return $("input:checkbox[name=test]:checked").serializeArray();
};

答案 3 :(得分:0)

当您在de each(console.log($(this).val(),vartoberead);)中打印值时,它会正确显示值吗?

其他的是你要在每个内部返回值。

试试这个:

function getcheckboxed() {
    vartoberead = [];
    $("input:checkbox[name=test]:checked").each(function(){
        vartoberead.push($(this).val());
    });
    return vartoberead;
}

答案 4 :(得分:0)

我有一个纯粹的JavaScript解决方案。我使用了html数组,即所有具有相同名称的复选框(比如test [])

function getCheckBoxesValues()
{
	var values=[];
    for(var i=0;i<document.getElementsByName('test[]').length;i++)
         
                {
                        if((document.getElementsByName('test[]')[i]).checked)
							{
								values.push((document.getElementsByName('test[]')[i]).value);
							}
                }
	return values;			
}
<input type="checkbox" name="test[]" value="c1"/>
<input type="checkbox" name="test[]" value="c2"/>
<input type="checkbox" name="test[]" value="c3"/>
<input type="checkbox" name="test[]" value="c4"/>
<input type="checkbox" name="test[]" value="c5"/>
<button onClick="alert(getCheckBoxesValues());">Result</button>

答案 5 :(得分:0)

您必须将代码修改为有效的JavaScript代码。 那是:  vartoberead [vartoberead .length]应为vartoberead[vartoberead.length],不得有任何空格。除了这个问题,其他一切都可以用你的代码完成。

通过查看代码,我宁愿使用vartoberead.push($(this).val())添加到返回的数组,而不是查看数组长度。