未捕获的TypeError:无法读取属性'显示'未定义的

时间:2015-11-04 00:08:56

标签: javascript

我尝试根据点击的按钮显示和隐藏多个div,但没有任何反应在Chrome Inspector中我收到错误:" Uncaught TypeError:无法读取属性'显示&# 39;未定义"

提前致谢!

触发并阻止:

echo '<button class="more" onClick="toggleLyrics()">Show lyrics <i class="fa fa-chevron-down"></i></button>';
echo '<div class="lyricsBox" style="display: block;"><pre>' . $row['lyrics'] .'</pre></div>';

脚本:

<script>
function toggleLyrics(){
var lyricsMore = document.getElementsByClassName('more');
var lyricsBox = document.getElementsByClassName("lyricsBox");

var displaySetting = lyricsBox.style.display;

if (displaySetting == 'block') { 
  lyricsBox.style.display = 'none';
}
else { 
  lyricsBox.style.display = 'block';
}
}
</script>

2 个答案:

答案 0 :(得分:2)

getElementsByClassName返回您通过索引访问的集合,以便找到找到的DOM元素。

您可以单独执行此操作:

lyricsBox[0].style.display

或典型的for循环。

另一个选项,如果您只需要匹配的第一个元素,则使用querySelector代替。

var lyricsBox = document.querySelector(".lyricsBox");

这将返回CSS选择器匹配的第一个元素。它还具有比.getElementsByClassName更好的浏览器支持。

它有一个对应的.querySelectorAll(),也可以返回一个集合。

答案 1 :(得分:1)

#include <stdio.h> #include <ctype.h> int main(void){//unused argv FILE *pFile; int ch, prev = 0; int totalCharLength = 0; int wrap_size = 60; //char newline[] = "newline"; pFile = fopen("test5.txt","r"); if(pFile != NULL){ while((ch = fgetc(pFile)) != EOF){ if(isspace(ch)) ch = ' '; if(prev == ' ' && ch == ' ') continue;//unified prev = ch; putchar(ch); if(++totalCharLength == wrap_size -1){//-1 : include newline putchar('\n');//printf("%s", newline); totalCharLength = 0; } } fclose(pFile);//put inside if-block } return 0; } 返回一个元素集合,首先需要从集合中获取元素。

getElementsByClassName