Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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 - Fatal编程技术网

Javascript 无法从函数返回值

Javascript 无法从函数返回值,javascript,jquery,Javascript,Jquery,我想从包含匿名函数的函数返回值 function getSingleCheckedItemId() { return $(".data-table-chk-item").each(function() { if ($(this).is(":checked")) { var value = $(this).attr("value"); return value; } }); } 在本例中,它返回所有复选框的数组。

我想从包含匿名函数的函数返回值

function getSingleCheckedItemId() {
    return $(".data-table-chk-item").each(function() {
      if ($(this).is(":checked")) {
          var value = $(this).attr("value");
          return value;
      }
    });
  }
在本例中,它返回所有复选框的数组。如果删除第一个
返回
,它将不会返回值,而是
未定义

那么如何从
getSingleCheckedItemId()
返回值?

始终返回包含您迭代过的所有元素的jQuery对象,因此:

function getSingleCheckedItemId() {
    var ret;
    $(".data-table-chk-item").each(function() {
      if ($(this).is(":checked")) {
          ret = $(this).attr("value");
          return false; //breaks out of .each
      }
    });
    return ret;
}
另外,
this.value
通常是比
$(this.attr('value')
更好的选项,以防您处理表单输入-由于选中了
属性,您似乎有
单选
/
复选框。另外,
this.checked
返回一个布尔值,因此不需要使用
$(this.is(“:checked”)


我相信你的逻辑可以简化为:

function getSingleCheckedItemId() {
    return $(".data-table-chk-item:checked").val();
}
这种方法将返回第一个
:checked
项的值,如果选择器没有匹配元素,则返回
未定义的
,与上面的循环相同。

始终返回包含您迭代过的所有元素的jQuery对象,因此:

function getSingleCheckedItemId() {
    var ret;
    $(".data-table-chk-item").each(function() {
      if ($(this).is(":checked")) {
          ret = $(this).attr("value");
          return false; //breaks out of .each
      }
    });
    return ret;
}
另外,
this.value
通常是比
$(this.attr('value')
更好的选项,以防您处理表单输入-由于选中了
属性,您似乎有
单选
/
复选框。另外,
this.checked
返回一个布尔值,因此不需要使用
$(this.is(“:checked”)


我相信你的逻辑可以简化为:

function getSingleCheckedItemId() {
    return $(".data-table-chk-item:checked").val();
}
这种方法将返回第一个
:选中的
项的值,或者如果选择器没有匹配元素,则返回未定义的
项的值,这与上面的循环相同。

您可以执行以下操作:

function getSingelCheckedItemId() {
    var elements = $(".data-table-chk-item:checked");
    return (elements.length > 0) ? $(elements[0]).val() : undefined;
}
你可以这样做:

function getSingelCheckedItemId() {
    var elements = $(".data-table-chk-item:checked");
    return (elements.length > 0) ? $(elements[0]).val() : undefined;
}

我会这样做

function getSingleCheckedItemId() {
    var ret;
    $(".data-table-chk-item").each(function() {
        if ($(this).is(":checked")) {
            ret = $(this).attr("value");
        }
    });
    return ret;
}

我会这样做

function getSingleCheckedItemId() {
    var ret;
    $(".data-table-chk-item").each(function() {
        if ($(this).is(":checked")) {
            ret = $(this).attr("value");
        }
    });
    return ret;
}

尝试使用
filter
而不是
each
。或者
map
如果您确实需要获取值,那么可能。但我认为他可以通过亲自访问这些函数的文档了解更多。另外,我现在没有时间检查jQuery的impl…尝试使用
filter
而不是
each
。或者
map
如果您确实需要获取值,那么可能。但我认为他可以通过亲自访问这些函数的文档了解更多。另外,我现在没有时间检查jQuery的impls…您不必:
var ret=$(this.attr(“value”)在该函数下。。。只是
ret=$(this.attr(“value”):)您不必:
var ret=$(this.attr(“value”)在该函数下。。。只是
ret=$(this.attr(“value”):)返回false不是从getSingleCheckedItem中断并返回false而不是ret值吗?不,
返回false
不会影响
的返回值。每个
的返回值,并且此答案也不使用
的返回值<代码>=]
它只从前面的每一个中断。返回false不是从getSingleCheckedItem中分离出来并返回false而不是ret值吗?不,返回false不会影响
。each
的返回值,并且这个答案也不会使用
。each
的返回值<代码>=]
它只从前面的每一个中断。