2013-09-27 43 views
0

有產生選擇女巫動態,它看起來像這樣如何給選定的價值與期權沒有價值 - 我的JavaScript

<select id="elem"> 
     <option value="3">value 1</option> 
     <option value="6">value 2</option> 
     <option value="18">value 3</option> 
     <option>value 4</option> 
    </select> 

最後的選擇沒有價值。我試圖做出選擇,以顯示當頁面加載的第一個位置「值4」的選項,使用JavaScript

以下是我在javascript

var elem = document.getElementById("elem"), 
     selectedNode = elem.options[elem.selectedIndex]; 

    if (selectedNode.value === "") { 
     selectedNode.setAttribute('selected',''); 
    } 

試了一下如何可以做到?

+1

'selectedNode.innerHTML ===「value 4」' – Ilya

+1

你是不是指'selectedNode.setAttribute('selected','selected');'? – Boaz

+0

爲什麼不讓服務器確定它正在創建的值,並將其設置爲在那裏?你在JS中正在做的是查找已經選擇的值,然後在值爲空時取消選擇它。如果你想選擇沒有值的選項,你最好循環選擇集合和'setAttribute(「選擇」,「選擇」)''值'==「」'...... – scrappedcola

回答

0

當沒有指定value時,value將成爲文本。您可以使用hasAttribute來檢查value還有:

var select = document.getElementById("elem"); 

for (var i = 0; i < select.options.length; i++) { 
    if (!select.options[i].hasAttribute('value')) { 
     select.options[i].selected = true; 
    } 
} 

演示:http://jsfiddle.net/tymeJV/682Ap/1/

+0

是否有任何其他方式你可以想到檢查選項是否具有值屬性? –

+0

@GurpreetSingh - 我更新了答案,你可以使用'hasAttribute' – tymeJV

+0

偉大 - 我認爲這是更好的方法。失去對JS選擇器的掌握,一直在做jQuery太久。 –

0

幾種方法來做到這一點。如果你需要首先找到選項,代碼將是這樣的。它尋求與非數值選項 - 不幸的是,如果你忽略了價值選擇的文本將成爲它的價值

var sel = document.getElementById("elem"); 
var index = 0; 
for(var i = 0;i<sel.options.length;i++){ 
    if (isNaN(sel.options[i].value)) 
    index = i; 
} 

如果你知道索引,你可以設置所選擇的選項,

sel.selectedIndex = index;