Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.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_Html - Fatal编程技术网

Javascript 仅获取下拉列表的选定选项属性

Javascript 仅获取下拉列表的选定选项属性,javascript,html,Javascript,Html,我有显示物品数量和价格的下拉列表。每个都有自己的数据roomid属性。当我选择一个时,它还会显示由于querySelectorAll()(我想)而选择的其他下拉列表中的所有。当我从任何下拉列表中选择一个时,我只想得到一个数据室ID属性。我该怎么做呢 这就是我所做的,正如我上面所说的,无论我点击哪个下拉列表,它都会得到每个下拉列表的每个选中的 函数sumre(){ var selects=document.querySelectorAll(“.rooms”); selects.forEach(函

我有显示物品数量和价格的下拉列表。每个
都有自己的
数据roomid
属性。当我选择一个
时,它还会显示由于
querySelectorAll()
(我想)而选择的其他下拉列表中的所有
。当我从任何下拉列表中选择一个
时,我只想得到一个
数据室ID
属性。我该怎么做呢

这就是我所做的,正如我上面所说的,无论我点击哪个下拉列表,它都会得到每个下拉列表的每个选中的

函数sumre(){
var selects=document.querySelectorAll(“.rooms”);
selects.forEach(函数(select){
var roomid=select.options[select.selectedIndex].getAttribute(“数据roomid”);
警惕(室友);
});
}

0
1 ($ 88)
2 ($ 176)
3 ($ 264)
4 ($ 352)
5 ($ 440)
0
1 ($ 77)
2 ($ 154)
3 ($ 231)
4 ($ 308)
将“选择”对象传递给sumre方法的是什么

function sumre(选择){
var roomid=select.options[select.selectedIndex].getAttribute(“数据roomid”);
警惕(室友);
}

0
1 ($ 88)
2 ($ 176)
3 ($ 264)
4 ($ 352)
5 ($ 440)
0
1 ($ 77)
2 ($ 154)
3 ($ 231)
4 ($ 308)

jQuery简化我的答案

您可以将此传递给函数,以了解您更改的元素:

函数集(el){
var roomId=$('option:selected',el).data('roomId');
警惕(室友);
}

0
1 ($ 88)
2 ($ 176)
3 ($ 264)
4 ($ 352)
5 ($ 440)
0
1 ($ 77)
2 ($ 154)
3 ($ 231)
4 ($ 308)

可能是因为您使用了
.forEach
?在jQuery中,它将是
$('.rooms').eq(0).find('option:selected').data('roomid')
那么您正在选择所有
.rooms
元素……如果您不想这样做,那么就不要这样做。相反,只访问触发事件的select元素。(使用这种通过HTML属性附加事件处理程序的老式方法,您需要这样做,
函数sumre(selectelement){…}
onchange=“sumre(this)”
)谢谢。这是JQuery的一个很好的答案。我正在使用另一个Javascript库而不是JQuery。由于重复率低,我无法给出+1