我需要添加條件,以便我的代碼支持輸入(1個按鈕需要生成整個Json)。
我試着過濾:
elements.tagName
但它給了我一個未定義的,我想這是因爲
var elements = document.getElementsByClassName('selectVal');
返回一個節點列表。如何過濾或修改我的代碼,以便相同的功能支持輸入?
我需要將選定的項目存儲在列表中,而輸入中的字符串只需一個按鈕。
我需要添加條件,以便我的代碼支持輸入(1個按鈕需要生成整個Json)。
我試着過濾:
elements.tagName
但它給了我一個未定義的,我想這是因爲
var elements = document.getElementsByClassName('selectVal');
返回一個節點列表。如何過濾或修改我的代碼,以便相同的功能支持輸入?
我需要將選定的項目存儲在列表中,而輸入中的字符串只需一個按鈕。
elements
是您從getElementsByClassName
獲得的元素數組。相反,您應該在循環內檢查elements[index]
的tagName。
添加輸入(具有更好的類取代selectVal
所有形式,雖然對象):
<input id="textbox" class="selectVal" value="text value">
你可以改變環路的內部去尋找標籤
...
var strSel = '';
if (element.tagName == 'SELECT')
strSel = element.options[element.selectedIndex].text;
else if (element.tagName == 'INPUT')
strSel = element.value;
...
我不知道過濾列表,而不是使用類似jQuery的優雅方式。你可能會繼續使用舊的學校解決方案:
var elements = document.getElementsByClassName('selectVal');
for (var i = 0; i < elements.length; ++i) {
var element = elements[i];
if (i.tagName == 'DIV') {
// whatever
}
}
這就是說,這會找到你所有的<div>
小號selectVal
類:
var elements = document.querySelectorAll('div.selectVal');
取決於你的使用情況這可能是不夠的。
正如上面評論中提到的@adeneo,您可以使用querySelectorAll
與逗號分隔的多個選擇器,
獲取.selectVal
和input
值:
document.querySelectorAll('.selectVal, input');
希望這會有所幫助。
function getSelectedItems(){
var elements = document.querySelectorAll('.selectVal, input')
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
if (element.tagName==='SELECT')
console.log(element.options[element.selectedIndex].text);
else
console.log(element.value);
}
}
<select id="Sobre" class="selectVal">
<option value="1" selected>fasfaf</option>
<option value="2">afsaf</option>
<option value="3">Fraasfsafe</option>
</select>
<select id="asdafa" class="selectVal">
<option value="1">fassad</option>
<option value="2" selected>fasfsa</option>
<option value="3">asdasf</option>
</select>
<select id="asdf" class="selectVal">
<option value="1">fdsa</option>
<option value="2">asdfg</option>
<option value="3" selected>dsaf</option>
</select>
<input name="test" value='input value' />
<button onClick="getSelectedItems()">Añadir</button>
var strSel = element.options [element.selectedIndex] .text;給我這個解決方案未定義,想知道爲什麼? – Pablo
你必須定義'element'變量檢查我的更新... –
'document.querySelectorAll( 'SELECTVAL,輸入')' – adeneo
雖然的jsfiddle是好的,你的代碼需要在這一問題。請[編輯]您的問題以包含代碼。 – Makyen
將輸入添加到選擇器本身不會有幫助。在循環元素以獲取值時,您需要檢查什麼類型的元素。 – Asken