2011-07-07 77 views

回答

5
var options = document.getElementById("abc").options; 
for (var i = 0, j = options.length; i < j; i++) { 
    if (options[i].value == "1") { 
     alert(options[i].text); 
    } 
} 

valuetext属性都可以在每HTMLOptionElement DOM级别2.

demo


向上日期
Updated demo与合并文本,比较。评论:

var options = document.getElementById("abc").options, 
    text = ""; 

for (var i = 0, j = options.length; i < j; i++) { 
    if (options[i].value == "1") { 
     text += options[i].text; 
    } 
} 
+0

你可以在'alert()'下面加入'break'语句来停止循环。 @ Guffa的回答。但请注意@Felix Kling的评论(如果有多个“选项”,其值为“1”'。 – jensgram

+0

这是不正确的('break')。顺便说一句,这只适用于'#abc'选择元素,我的意思是,你的假设的整个工作是正确的,但它不是100%等价于选择器(但也许我太nitpicky;)) –

+0

@Felix Kling,不,我注意到你的评论我意识到可能的错误。将更新演示。 – jensgram

1

这将等同于选择100%:

var options = document.getElementById('abc').getElementsByTagName('option'), 
    text = ""; 

for(var i = 0, l = options.length; i < l; i++) { 
    var option = options[i]; 
    if(option.value === '1') { 
     text += option.text; 
    } 
} 

或者,如果querySelectorAll可用:

var options = document.querySelectorAll('#abc option[value="1"]'), 
    text = ""; 
for(var i = 0, l = options.length; i < l; i++) { 
    text += options[i].text; 
} 

这就是说,你可以依赖于HTML改进结构(例如,如果#abc是选择元素等)。

1

声明没有意义。它从选项中获取文本,然后将其扔掉。我假设你想对文本做些什么,比如将它分配给一个变量。

// A variable for the result 
var text = null; 

// Get the options from the select element 
var options = document.getElementById('abc').options; 

// Find the option with the value "1" 
for (var i = 0; i < options.length; i++) { 
    if (options[i].value == '1') { 
    // Get the text from the option 
    text = options[i].text; 
    // Exit from the loop 
    break; 
    } 
} 

注:原代码将得到与指定的值的所有选项的文本,但是这个代码仅会从找到的第一个选项的文本。拥有多个具有相同值的选项非常没用,因此原始代码的功能很可能是无意的。

+0

“break”是错误的。 '.text()'获取所有选定元素的组合文本内容。 –

+0

@Felix Kling:这取决于这是否是原始代码的意图。无论如何,具有相同值的多个选项都是无用的。我会添加一条评论,以便清楚代码的作用。 – Guffa

+0

是的,我意识到它取决于你做出的假设。很可能你的代码正是OP想要的...... –

1

在现代浏览器中,可以这样:

var option = document.querySelector('#abc option[value="1"]').textContent 
+0

如果你想100%正确,你必须使用'querySelectorAll'。而'textContent'在IE afaik中不起作用。 –

+0

旧的IE没有querySelector,我写了现代浏览器。 –

+0

啊,是的,IE9有'textContent'。尼斯:) –

1

这会工作。

document.querySelector(".producer option[value='1']").text;