Javascript HTML中选项标记的意外行为

Javascript HTML中选项标记的意外行为,javascript,jquery,html,option,html-select,Javascript,Jquery,Html,Option,Html Select,我有以下代码 <select id="part"> <option>noun</option> <option>verb</option> <option>adjective</option> </select> 使用 var names=["noun","adjective","verb"]; for (var i =0;i<names.length;i++) { var optio

我有以下代码

<select id="part">
<option>noun</option>
<option>verb</option>
<option>adjective</option>
</select>
使用

var names=["noun","adjective","verb"];
for (var i =0;i<names.length;i++) {
    var option=$("<option>",{
            value:names[i],
            text:names[i]});
    $("#part").append(option);
}
var name=[“名词”、“形容词”、“动词”];
对于(var i=0;i
$(“#part”).text()
不会返回任何内容,但不会返回您期望的内容()

说明:text返回去掉html()的对象的文本,因此在去掉html之后,您将得到select的内部内容

如果需要所选值的文本,请在jquery选择器中包含所选选项:即
$('#part option:selected')。text()
,它使用(也在我的小提琴中)。

检查此处演示

您只需要获取所选选项文本,因为有三个选项

当您获得
$(“#part”).val()
时,您直接获得所选值(仅一个所选值)。但当您获得
$(“#part”).text()
时,您将获得整个所选文本的文本,其中有三个选项和三种文本类型

JQUERY
$(文档).ready(函数(){
变量名称=[“名词”、“形容词”、“动词”];

对于(var i=0;i
$(“#part”).text()
不会给出一个空字符串(至少在Chrome中不会):-请注意,尽管您缺少一个
,所以您的
$(“#part”).text()
根本不起作用。请编辑您的问题,以改写“此处的值是属性”开头的句子(因为按原样是没有意义的-你是想说如果你把
属性从jQuery代码中保留在循环中,那么结果就不起作用了吗?)@nnnnn说了什么。还有专业提示:define
var$part=$(“#part”)
并且use在
for
循环中。@nnnnnn:我已经为那个输入错误编辑了代码(缺少))并重新表述了问题。我正在使用firefox来测试这一点。
var names=["noun","adjective","verb"];
for (var i =0;i<names.length;i++) {
    var option=$("<option>",{
            value:names[i],
            text:names[i]});
    $("#part").append(option);
}
$(document).ready(function(){
    var names=["noun","adjective","verb"];
    for (var i =0;i<names.length;i++) {
        var option=$("<option>",{
                value:names[i],
                text:names[i]});
        $("#part").append(option);
    }
    
    $("#part").on('change', function() {
        alert('Value is '+$(this).val());
        var text = $("#part option:selected").text();
        alert('Text is '+text);
    });        
});