有人可以幫助什麼是下面的jQuery線的JavaScript等價物。jQuery代碼的JavaScript等效物
$("#abc option[value='1']").text();
ABC是選擇框的id
有人可以幫助什麼是下面的jQuery線的JavaScript等價物。jQuery代碼的JavaScript等效物
$("#abc option[value='1']").text();
ABC是選擇框的id
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);
}
}
的value
和text
屬性都可以在每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;
}
}
這將等同於選擇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
是選擇元素等)。
聲明沒有意義。它從選項中獲取文本,然後將其扔掉。我假設你想對文本做些什麼,比如將它分配給一個變量。
// 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;
}
}
注:原代碼將得到與指定的值的所有選項的文本,但是這個代碼僅會從找到的第一個選項的文本。擁有多個具有相同值的選項非常沒用,因此原始代碼的功能很可能是無意的。
「break」是錯誤的。 '.text()'獲取所有選定元素的組合文本內容。 –
@Felix Kling:這取決於這是否是原始代碼的意圖。無論如何,具有相同值的多個選項都是無用的。我會添加一條評論,以便清楚代碼的作用。 – Guffa
是的,我意識到它取決於你做出的假設。很可能你的代碼正是OP想要的...... –
在現代瀏覽器中,可以這樣:
var option = document.querySelector('#abc option[value="1"]').textContent
如果你想100%正確,你必須使用'querySelectorAll'。而'textContent'在IE afaik中不起作用。 –
舊的IE沒有querySelector,我寫了現代瀏覽器。 –
啊,是的,IE9有'textContent'。尼斯:) –
這會工作。
document.querySelector(".producer option[value='1']").text;
你可以在'alert()'下面加入'break'語句來停止循環。 @ Guffa的回答。但請注意@Felix Kling的評論(如果有多個「選項」,其值爲「1」'。 – jensgram
這是不正確的('break')。順便說一句,這隻適用於'#abc'選擇元素,我的意思是,你的假設的整個工作是正確的,但它不是100%等價於選擇器(但也許我太nitpicky;)) –
@Felix Kling,不,我注意到你的評論我意識到可能的錯誤。將更新演示。 – jensgram