从下拉框中获取文本

Getting the text from a drop-down box

提问人:Teifion 提问时间:8/8/2008 最后编辑:Rais AlamTeifion 更新时间:4/13/2023 访问量:258935

问:

这将获取在我的下拉菜单中选择的任何内容的值。

document.getElementById('newSkill').value

但是,我无法确定下拉菜单当前显示的文本要追求的属性。我尝试了“文本”,然后查看了 W3Schools,但没有答案,这里有人知道吗?

对于那些不确定的人,这里有一个下拉框的 HTML。

<select name="newSkill" id="newSkill">
    <option value="1">A skill</option>
    <option value="2">Another skill</option>
    <option value="3">Yet another skill</option>
</select>
JavaScript DOM 浏览器 客户端

评论


答:

1赞 Brian Childress 8/8/2008 #1

这能得到正确的答案吗?

document.getElementById("newSkill").innerHTML

评论

5赞 Valentin Despa 11/29/2011
这将返回选项的完整 HTML 代码。比如 ' <option value=“1”>A skill</option> <option value=“2”>Another skill</option> <option value=“3”>Yet another skill</option> '
6赞 Thejesh GN 8/8/2008 #2
document.getElementById('newSkill').options[document.getElementById('newSkill').selectedIndex].value 

应该有效

评论

4赞 ninjaPixel 10/30/2013
OP 需要 .text 属性,而不是 .value
9赞 Tanerax 8/8/2008 #3

这应该返回所选值的文本值

var vSkill = document.getElementById('newSkill');

var vSkillText = vSkill.options[vSkill.selectedIndex].innerHTML;

alert(vSkillText);

道具:@Tanerax用于阅读问题,知道问题的内容并在其他人弄清楚之前回答问题。

编辑:DownModed,因为我实际上完全阅读了一个问题,并回答了它,这是一个可悲的世界。

152赞 Patrick McElhaney 8/8/2008 #4

根据示例 HTML 代码,以下是获取当前所选选项的显示文本的一种方法:

var skillsSelect = document.getElementById("newSkill");
var selectedText = skillsSelect.options[skillsSelect.selectedIndex].text;

评论

4赞 Teifion 9/19/2008
对于那些迟到的人,有几个建议,但没有人注意到他们说了 .value,他们应该说 .text,这对我们所有人来说都是令人困惑的一天。
4赞 Lilith 2/3/2013 #5

这有效,我自己尝试过,我想我把它贴在这里,以防有人需要它......

document.getElementById("newSkill").options[document.getElementById('newSkill').selectedIndex].text;
0赞 raton 5/13/2014 #6
    var ele = document.getElementById('newSkill')
    ele.onchange = function(){
            var length = ele.children.length
            for(var i=0; i<length;i++){
                if(ele.children[i].selected){alert(ele.children[i].text)};              
            }
    }   
2赞 shekh danishuesn 10/1/2015 #7

将更改事件附加到 select,该事件获取每个选定选项的文本并将它们写入 div。

你可以使用jQuery,它非常有面子,成功且易于使用

<select name="sweets" multiple="multiple">
  <option>Chocolate</option>
  <option>Candy</option>
  <option>Taffy</option>
  <option selected="selected">Caramel</option>
  <option>Fudge</option>
  <option>Cookie</option>
</select>
<div></div>


$("select").change(function () {
  var str = "";

  $("select option:selected").each(function() {
    str += $( this ).text() + " ";
  });

  $( "div" ).text( str );
}).change();
0赞 Debanjan Roy 2/1/2016 #8
var selectoption = document.getElementById("dropdown");
var optionText = selectoption.options[selectoption.selectedIndex].text;

评论

0赞 Stephan Kristyn 2/11/2016
一些文字来解释发生了什么怎么样?
0赞 Ferrybig 2/11/2016
虽然仅代码答案可以解决操作的问题,但不建议这样做,因为它对未来的访问者没有价值,仅提供的答案很快就会被标记为“质量非常低”,结果它将很快被删除。编辑您的答案以包含所提供代码的作用的解释。
0赞 Debanjan Roy 7/20/2016
谢谢。我希望我的答案很容易被其他人理解。
0赞 Chris22 8/9/2017
当我尝试记录它时,只返回第一个选项项。我希望它们中的每一个都从事件中显示出来。var optionText = selectoption.options[selectoption.selectedIndex].text;onchange
0赞 IbrahimSediq 3/29/2016 #9

请尝试以下方法,这是最简单的方法,并且效果很好

var newSkill_Text = document.getElementById("newSkill")[document.getElementById("newSkill").selectedIndex];
23赞 BOBIN JOSEPH 5/23/2017 #10

简单地说,您可以使用jQuery而不是JavaScript

$("#yourdropdownid option:selected").text();

试试这个。

评论

3赞 cazort 4/3/2019
原来的问题没有提到 JQuery。我们这些不使用 JQuery 的人通常更希望答案不要引用它,除非问题引用或标记它。当有一个相对简洁的解决方案时,情况尤其如此,比如 Patrick McElhaney 给出的解决方案。
2赞 Broken Man 10/28/2019
@cazort 恰恰相反。我需要知道如何用 JQuery 做到这一点,这个答案为我提供了我需要知道的东西,因此 Bobin Joseph 将其作为答案非常有用(也很好)。
0赞 JCIsola 4/16/2021
@cazort帕特里克的答案是13岁的男人
0赞 cazort 4/19/2021
@JCIsola我不在乎帕特里克的答案有多老,我关心它是否在没有额外软件包的情况下工作。它适用于所有现代浏览器,如果有的话,现在更好,因为代码不起作用的旧浏览器(例如不支持 getElementById())早已退役,而在编写答案时,一些这样的浏览器仍在使用。除了问题中指定的包之外,它不需要额外的包。
2赞 Muhammad Tariq Ahmed Khan 10/25/2017 #11
function getValue(obj)
{  
   // it will return the selected text
   // obj variable will contain the object of check box
   var text = obj.options[obj.selectedIndex].innerHTML ; 

}

HTML 代码段

 <asp:DropDownList ID="ddl" runat="server" CssClass="ComboXXX" 
  onchange="getValue(this)">
</asp:DropDownList>
2赞 Manpreet Singh Dhillon 2/14/2019 #12

这是一个简单而简短的方法

document.getElementById('elementID').selectedOptions[0].innerHTML
0赞 RayH 6/3/2021 #13

发现这是一个棘手的问题,但使用这里的想法,我最终得到了使用PHP和Mysqli填充列表的解决方案:然后是一些javascript来获取工作变量。

        <select  id="mfrbtn" onchange="changemfr()" >   
        <option selected="selected">Choose one</option>
            <?php
            foreach($rows as $row)
                {
                echo '<option   value=implode($rows)>'.$row["Mfrname"].'</option>';
                 }
              ?>
          </select>

然后:

<script language="JavaScript">
    
    function changemfr()
    {
     var $mfr2=document.getElementById("mfrbtn").selectedOptions[0].text;
     alert($mfr2);
    }
</script>
1赞 Fahad Mughal 4/13/2023 #14

使用 jQuery 获取下拉列表的选定文本。我在 MVC 中使用了它......

$('#dropdownId :selected').text()