Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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 了解每个jquery函数的功能-意外输出_Javascript_Jquery_Html - Fatal编程技术网

Javascript 了解每个jquery函数的功能-意外输出

Javascript 了解每个jquery函数的功能-意外输出,javascript,jquery,html,Javascript,Jquery,Html,我正试着对每个函数进行思考。用这把小提琴 我想逐一遍历列表框中选定的元素 基本上,我期待这样的输出 found itemA found itemB found itemA,itemB 但是我得到了这样的输出 found itemA found itemB found itemA,itemB 我想知道为什么会发生这种情况,以及我如何解决它。 这是我正在使用的代码 HTML 您正在迭代选择,而不是选项s。传递给每个函数的函数只会被调用一次。将选择器更改为#test>选项,并与问题的注释一样,

我正试着对
每个
函数进行思考。用这把小提琴
我想逐一遍历列表框中选定的元素

基本上,我期待这样的输出

found itemA
found itemB
found itemA,itemB
但是我得到了这样的输出

found itemA
found itemB
found itemA,itemB
我想知道为什么会发生这种情况,以及我如何解决它。 这是我正在使用的代码

HTML


您正在迭代
选择
,而不是
选项
s。传递给每个函数的函数只会被调用一次。将选择器更改为
#test>选项
,并与问题的注释一样,将
val()
更改为
text()


您正在迭代
选择
,而不是
选项
s。传递给每个函数的函数只会被调用一次。将选择器更改为
#test>选项
,并与问题的注释一样,将
val()
更改为
text()

  • 必须指定元素选择器。仅使用
    #test
    不会迭代
    选项
    ,因为您实际上没有引用它
$(“#出价”)。单击(函数(){
$(“#测试选项”)。每个(函数(){
log(“找到”+$(this.val());
});
});

项目a
项目B

测试
  • 必须指定元素选择器。仅使用
    #test
    不会迭代
    选项
    ,因为您实际上没有引用它
$(“#出价”)。单击(函数(){
$(“#测试选项”)。每个(函数(){
log(“找到”+$(this.val());
});
});

项目a
项目B

测试您要使用的

$.each($("#test").prop("options"), function () {
    console.log("found " + this.value);
});

你会想用

$.each($("#test").prop("options"), function () {
    console.log("found " + this.value);
});


下面是一个可能更能说明这一点的示例:

HTML

<select multiple="multiple" size="5" id="test">
  <option value="a">Item A</option>
  <option value="b">Item B</option>
</select>
<br>
<button type="button" id="bid">test</button>

$(选择器).each(回调(索引,元素))
将迭代选择器中的每个元素,并将其索引和元素传递给函数。

下面是一个可能会对其进行更多解释的示例:

HTML

<select multiple="multiple" size="5" id="test">
  <option value="a">Item A</option>
  <option value="b">Item B</option>
</select>
<br>
<button type="button" id="bid">test</button>

$(选择器).each(回调(索引,元素))
将迭代选择器中的每个元素,将其索引和元素传递给函数。

然后我得到'found itemA itemB',输出仍然不是我所期望的,那么您期望
$(this).val()返回什么?为什么
$(“#test”)
会选择多个元素?然后我会得到`found itemA itemB`输出仍然不是我期望的那么好,你期望
$(this).val()返回什么?为什么
$(“#test”)
会选择多个元素?
innerHTML
?只要获取
这个.value
@Bergi-Huh,我就确信当
选项中没有
value
属性时,
.val()
将无法工作。
innerHTML
?只需获取
this.value
@Bergi-Huh,我确信当
选项中没有
value
属性时,
.val()
将不起作用。val表示表单元素的值,似乎您正在尝试获取选项的文本。val表示表单元素的值,似乎您正在尝试获取选项的文本。
$(function() {
  $("#bid").click(function() {
    $("#test option").each(function(ind, el) {
      console.log("At Index " + ind +" found Option with Value: " + $(el).val() + " and Label of: " + $(el).html());
    });
  });
});