为什么以下代码显示[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>
答案 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].textContent
或all[i].innerHTML