JavaScript getElementsByTagName显示[object HTMLParagraphElement]而不是该元素的内容?

时间:2014-05-27 18:06:53

标签: javascript getelementsbytagname

为什么以下代码显示[object HTMLParagraphElement]而不是元素内容?我也试过添加.innerHTML,但这只是显示未定义,这更令人困惑。 任何帮助将不胜感激。 谢谢

<form name="form1">
<p id="p1"> Paragraph 1</p>
<p id="p1"> Paragraph 2</p>
<p id="p1"> Paragraph 3</p>
<p id="p1"> Paragraph 4</p>

<input type="button" onClick="getElements();" value="Get elements"/>
</form> 

<SCRIPT language=javascript>
function getElements() {
var all = document.getElementsByTagName("p");

for (var i=0, max=all.length; i < max; i++) {
    alert(all[i]);
}
}

  </SCRIPT>

2 个答案:

答案 0 :(得分:2)

请不要像调试语句一样使用alert。请改用console.log(all[i])

此外,all[i]引用了整个元素。如果您需要内容,请使用all[i].textContent

另外,我必须建议您不要使用内联JavaScript。它很难看,应该与HTML分开。使用事件监听器!

var btn = document.getElementById("input-tag-id-here");
btn.addEventListener("click", getElements, false);

如果跨浏览器兼容性存在问题,旧的IE版本使用attachEvent而不是addEventListener。但最好从HTML中抽象出你的javascript。

答案 1 :(得分:-1)

使用all[i].textContentall[i].innerHTML