返回值数组的Javascript函数

Javascript function that return an array of values

本文关键字:函数 Javascript 数组 返回值      更新时间:2023-09-26

这个函数从表中读取当前选择的值,我不能在这个函数之外的单个数组中获得它们的列表。

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

我已经在函数内部和外部声明了 vartoberread ,尝试使用:

var myoutsidevar = getcheckboxed();

但总是返回

(未定义)

感谢大家的帮助

你可以把它缩短一点:

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();
}

可以使用map:

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

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

你应该在each()循环之后return(而不是在你所做的循环内)无论如何你也可以使用serializeArray

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

当你打印de each里面的值时(console.log($(this).val(), vartoberead);)

另一件事是,你返回的是each中的值。

Try this:

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

我有一个纯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>

您必须将代码修改为有效的JavaScript代码。那就是:vartoberead [vartoberead .length]应为vartoberead[vartoberead.length],不带空格。除了这个问题,你的代码其他一切都没问题。

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