2017-03-09 72 views
1

爲什麼在console.log(tes_val)的結果中獲得undefined?我該如何解決它?爲什麼在使用`document.getElementsByClassName(...).value`時會得到'undefined`?

var tes = document.getElementsByClassName('a_b_1'); 
 
var tes_val = tes.value; 
 
console.log(tes_val);
<input type="hidden" class="a_b_1" name="c_d_1" value="1|2|3">

謝謝。

+5

選擇特定的元素,因爲'tes'是採集。使用'var tes_val = tes [0] .value;'。 – dfsq

+0

getElementsByClassName返回一個像數組一樣的集合。如果只有一個具有該類名稱的元素,則可以使用tes [0] .value – BenShelton

回答

4

getElementsByClassName返回HTMLCollection,所以爲了訪問第一個找到的元素在此集合,你需要使用[0]指數:

var tes_val = tes[0].value; 

然而,這是使用API​​笨拙的方式。如果你只在第一個元素類a_b_1使用Document.querySelector方法感興趣:

var tes = document.querySelector('.a_b_1'); 
var tes_val = tes.value; 
console.log(tes_val); 
2

getElementsByClassName(...)返回元素的列表。請注意方法名稱中的複數s!使用getElementsByClassName(...)[0]訪問列表中的第一個元素。

var tes = document.getElementsByClassName('a_b_1')[0] 
 
var tes_val = tes.value 
 
console.log(tes_val) //=> "1|2|3"
<input type="hidden" class="a_b_1" name="c_d_1" value="1|2|3">
所有子元素的

0

document.getElementsByClassName陣列狀物體。

所以,你必須通過將指數

var tes = document.getElementsByClassName('a_b_1'); 
var tes_val = tes[0].value; 
console.log(tes_val); 

DEMO

0

var tes = $('.a_b_1'); 
 
var tes_val = tes.val(); 
 
console.log(tes_val);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="hidden" class="a_b_1" name="c_d_1" value="1|2|3">

使用.val() jQuery的

+0

down vote for for? – guradio

相關問題