为什么在使用`document.getElementsByClassName(...)。value`时会得到`undefined`?

时间:2017-03-09 08:59:55

标签: javascript jquery html

为什么undefined导致console.log(tes_val)?我该如何解决?

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">

谢谢。

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

getElementsByClassName(...)返回元素列表。请注意方法名称中的复数s!使用getElementsByClassName(...)[0]访问列表中的第一个元素。

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

答案 2 :(得分:0)

document.getElementsByClassName所有子元素的类似数组的对象。

所以你必须通过传递索引

来选择特定元素
var tes = document.getElementsByClassName('a_b_1');
var tes_val = tes[0].value;
console.log(tes_val);

DEMO

答案 3 :(得分: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