Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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 有没有一种方法可以在没有ID的情况下获取SELECT标记中的所有选项值?_Javascript_Jquery - Fatal编程技术网

Javascript 有没有一种方法可以在没有ID的情况下获取SELECT标记中的所有选项值?

Javascript 有没有一种方法可以在没有ID的情况下获取SELECT标记中的所有选项值?,javascript,jquery,Javascript,Jquery,您知道是否有办法获取SELECT中包含的选项值中的所有值吗? 我将向您展示一个示例,我有以下代码: <SELECT onChange="chData(this,this.value)"> <OPTION VALUE=MIPS1 >MIPS <OPTION VALUE=MSU1 >MSU <OPTION VALUE=PERCEN1 >% CEC <OPTION VALUE=NUMGCP1 >nCPU </SELECT>

您知道是否有办法获取SELECT中包含的选项值中的所有值吗? 我将向您展示一个示例,我有以下代码:

<SELECT onChange="chData(this,this.value)"> 
<OPTION VALUE=MIPS1 >MIPS
<OPTION VALUE=MSU1 >MSU
<OPTION VALUE=PERCEN1 >% CEC
<OPTION VALUE=NUMGCP1 >nCPU
</SELECT>

MIPS
密歇根州立大学
%CEC
nCPU
我只知道第一个值,即MIPS1,我需要取其他值。如果我知道第一个MIPS1,我将搜索包含在中的其他值? 提前感谢:)

您可以使用以下内容获得具有特定值选项的
元素:

const select = document.querySelector('option[value=MIPS1]').closest('select');
const options = select.querySelectorAll('option');
一旦有了
元素,就可以使用如下方式检索它的选项:

const select = document.querySelector('option[value=MIPS1]').closest('select');
const options = select.querySelectorAll('option');
或:


正如@charlietfl提到的,
.closest
不是所有浏览器都支持的,相反,您可以使用
.parentElement
下面的示例演示了如何做到这一点。Jquery已被完全注释

如果这不是你所希望的,请告诉我


演示
//创建数组
var期权=[];
//将要查找的选项值加载到变量中
var search_term=“MIPS1”;
//查找具有已知值的选项,向上移动DOM树以进行选择,然后查找其中的所有选项
$(“option[value=”“+search_term+”))。最近的(“select”)。查找(“option”)。每个(函数(){
//向数组中添加值
options.push($(this.val());
});
//打印阵列
console.log(选项)

MIPS
密歇根州立大学
%CEC
nCPU
jQuery版本

var opt=“MIPS1”;
const$sel=$(“option[value='”+opt+'])。parent()
const options=$(“option”,$sel).map(函数(){return this.value}).get()
console.log(选项)

MIPS
密歇根州立大学
%CEC
nCPU

这将帮助您获得:选定值、选定文本和下拉列表中的所有值

$(文档).ready(函数(){
$(“按钮”)。单击(函数(){
var option=$('option[value=“MIPS1”]”);
var select=option.parent();
var值=$(选择).find(“:selected”).val();
var optionName=$(选择).find(“:selected”).text();
var result=“value=“+value+”\n选项名称=“+optionName+”\n所有值=“;
$(选择).each(函数(){
结果+=($(this.text()+);
});
控制台日志(结果);
});
});

MIPS
密歇根州立大学
%CEC
nCPU

单击
我认为首先不给html元素提供id是个坏主意,但是如果需要这样做,那么下面的代码假设页面上只有一个select标记

let select = document.querySelector('select');
options = select.childNodes.filter((c) => c.tagName==='OPTION')
             .map((o) => o.value);
console.log(options)


您的html中有多少个select标记?请在调用时在
chData()
内详细解释何时需要执行此操作?预期的结果是什么?@charlietfl我认为当一次更改发生时,Dana正在试图传递所选的值。@PrasanthGanesan说如果这是真的,那就简单了,因为
这个
就是
…但可能根本不是这样,这就是我问Kedhi的原因,感谢amswers。我的页面中有不同的SELECT标记,它们与不同的表相关,因为在每个表中我都有一个组合框。关键是我不能在select中添加ID,因为我不能修改创建html页面的代码。我希望做的是使用我拥有的选项值创建一个数组(在本例中:MIPS1、MSU1、PERCEN1和NUMGCP1)。的确,我没有ID,但我知道我是否有MIPS1或MU1..因此我想获取SELECT中包含的所有最近的选项值。注意IE不支持
最近的()
用于回答。我知道-这也是对tituth的一个提示。这根本不是问题所在。这不是显示选项标签中的值吗?它没有显示具有值MIPS1的选项的select中的所有选项-这是所问的问题,为了方便他,我发布了它。如果他想找到他选择的值,请查看屏幕顶部的警报。它会说
all values=
然后是下拉列表中的值:)这正是我要搜索的:)谢谢!我唯一需要改变的是,MIPS1应该是一个变量,因为它是动态的(它应该是MIPS1,但也可以假设其他值)。我需要做什么才能将其作为变量传递?Thankssvalue='“+var+”'请查看更新,然后@Dana如果这是您所寻找的,为什么您接受另一个不那么优雅的建议?开始时,我对答案感到困惑,我使用了他的答案,我回答了您。我验证了这两种方法都很有效,所以最后我使用了他的答案,因为他回答了我最后一个疑问。就为了这个。没有理由,:)谢谢这正是我要找的:)谢谢!我唯一需要改变的是,MIPS1应该是一个变量,因为它是动态的(它应该是MIPS1,但也可以假设其他值)。我需要做什么才能将其作为变量传递?感谢您支持使用您可以根据需要设置的变量进行搜索。很高兴它成功了!如果您满意,请向上投票/接受答案。我用这种方式获得一个变量://Create array var options=[];/查找具有已知值的选项,向上移动DOM树以进行选择,然后查找其中的所有选项$($(option[value=“+table_id+”))))。最近的(“select”)。查找(“option”)。每个(function(){//Add value to array options.push($(this.val());})$(“选项[value=“+table_id+”]))