我正在使用一个函数,其中我有一些元素,点击那些元素我需要找到其他元素的innerHTML。
我面临的问题是我能够找到该元素的长度,但同样地,当我试图获得相同元素的innerHTML时,它显示未定义。
我的功能
var question = document.querySelectorAll('.questions li a');
var i;
for (i = 0; i < question.length; i++) {
question[i].addEventListener('click', myFunction)
}
function myFunction() {
var div = document.getElementsByClassName('need_help')
alert(div.length);
//alert(div.innerHTML);
}
以下是我发现长度及其工作正常的示例:https://jsfiddle.net/uw0nsf4g/
这是我发现innerHTML并显示未定义的示例:https://jsfiddle.net/uw0nsf4g/1/
请告诉我代码有什么问题,如果元素是可搜索的,那为什么不是它的innerHTML?
提前致谢!
答案 0 :(得分:2)
返回的长度是带元素的数组的长度;尝试以下方法:
var question = document.querySelectorAll('.questions li a');
var i;
for (i = 0; i < question.length; i++) {
question[i].addEventListener('click', myFunction)
}
function myFunction() {
var divs = document.getElementsByClassName('need_help');
for(var j = 0; j < divs.length; j++) {
alert(divs[j].innerHTML);
}
}
答案 1 :(得分:2)
使用getElementsByClassName
函数可以获得数组od Elements。您只需要获得所需的索引并提醒innerHTML。
例如:
function myFunction() {
var div = document.getElementsByClassName('need_help')
alert(div.length);
alert(div[0].innerHTML);
}
答案 2 :(得分:1)
因为它返回一个数组。
alert(div[0].innerHTML);
会起作用
答案 3 :(得分:1)
DOM API函数getElementsByClassName()
返回类似于Object的数组。
所以你对这个函数的调用就是返回一个数组。 inner.HTML
属性可以使用DOM节点而不是DOM节点数组...
您需要从数组中选择一个元素来获取其内容
您可以循环遍历所有节点以获取其内容,或者您可以在上述情况下使用此数组中的第一个元素,如下所示:
var question = document.querySelectorAll('.questions li a');
var i;
for (i = 0; i < question.length; i++) {
question[i].addEventListener('click', myFunction);
}
function myFunction() {
var div = document.getElementsByClassName('need_help');
alert(div[0].innerHTML);
}
OR loop through all of the elements to get their content:
function myFunction() {
var div = document.getElementsByClassName('need_help');
for(var k = 0; k < div.length; k++) {
alert(div[k].innerHTML);
}
}