Javascript 无法将设置值设置为“0”;innerHTML";对于元素工作

Javascript 无法将设置值设置为“0”;innerHTML";对于元素工作,javascript,html,dom,Javascript,Html,Dom,我是JS的新手。我在下面有一个代码示例,其中我编写了一个JS函数,通过该函数,我试图在单击按钮后更改标记的值。我的问题是为什么只有设置innerHTML才能使用“getElementById()”;但不是用其他方法 <!DOCTYPE html> <html> <head> <script> function myFunction() { document.getElementById("myid").innerHTML = 'hey';

我是JS的新手。我在下面有一个代码示例,其中我编写了一个JS函数,通过该函数,我试图在单击按钮后更改标记的值。我的问题是为什么只有设置innerHTML才能使用“getElementById()”;但不是用其他方法

<!DOCTYPE html>
<html>
<head>
<script>
function myFunction() {
    document.getElementById("myid").innerHTML = 'hey';
    document.getElementByName("myname").innerHTML = 'Whats';
    document.getElementByTagName("p").innerHTML = 'up! ';
    document.querySelector("p#myid").innerHTML = 'Dude.';
}
</script>
</head>
<body>

<p id="myid" name="myname">This text will be changed after button click.</p>

<button onclick="myFunction()">Try it</button>

</body>
</html> 

函数myFunction(){
document.getElementById(“myid”).innerHTML='hey';
document.getElementByName(“myname”).innerHTML='Whats';
document.getElementByTagName(“p”).innerHTML='up!';
document.querySelector(“p#myid”).innerHTML='Dude';
}

此文本将在单击按钮后更改

试试看
结果:我希望在单击后显示“Dude.”


我确信
document.querySelectorAll
document.getElementsByClassName
document.getElementsByTagName
将返回节点列表对象。但是,
document.querySelector
应该返回给定上下文(document)中该元素的第一个匹配项。

我确信
document.querySelectorAll
document.getElementsByClassName
document.getElementsByTagName
将返回节点列表对象。但是,
document.querySelector
应该返回给定上下文(文档)中该元素的第一个匹配项。

脚本在
document.getElementByName(“myname”)上失败。innerHTML='Whats'行,因为
getElementByName
不是函数,当脚本试图调用它时会出错。正确的名字是;元素s。我也是

此外,这两个函数都返回元素列表,而不是单个元素。因此,在这里,您希望使用
[0]
获取该列表中的第一个元素,然后以这种方式使用它:

document.getElementsByName("myname")[0].innerHTML = 'Whats';

使用F12或Ctrl+Shift+I(取决于浏览器)打开浏览器控制台以查看错误,并查阅文档(例如我链接的站点中的文档)以确保使用了正确的功能。

脚本在
文档中失败。getElementByName(“myname”)。innerHTML='Whats'行,因为
getElementByName
不是函数,当脚本试图调用它时会出错。正确的名字是;元素s。我也是

此外,这两个函数都返回元素列表,而不是单个元素。因此,在这里,您希望使用
[0]
获取该列表中的第一个元素,然后以这种方式使用它:

document.getElementsByName("myname")[0].innerHTML = 'Whats';
使用F12或Ctrl+Shift+I(取决于浏览器)打开浏览器控制台以查看错误,并查阅文档(例如我链接的网站上的文档)以确保使用了正确的功能。


函数myFunction(){
调试器;
document.getElementById(“myid”).innerHTML='hey';
document.getElementsByName(“myname”).innerHTML='Whats';
document.getElementsByTagName(“p”).innerHTML='up!';
document.querySelector(“p#myid”).innerHTML='Dude';
}

此文本将在单击按钮后更改

试试看

函数myFunction(){
调试器;
document.getElementById(“myid”).innerHTML='hey';
document.getElementsByName(“myname”).innerHTML='Whats';
document.getElementsByTagName(“p”).innerHTML='up!';
document.querySelector(“p#myid”).innerHTML='Dude';
}

此文本将在单击按钮后更改

试试看
更改如下,它就可以工作了

document.getElementById("myid").innerHTML = 'hey';  
document.getElementsByName("myname")[0].innerHTML = 'Whats'; 
document.getElementsByTagName("p")[0].innerHTML = 'up! ';
document.querySelector("p#myid").innerHTML = 'Dude.';

改变如下,它就工作了

document.getElementById("myid").innerHTML = 'hey';  
document.getElementsByName("myname")[0].innerHTML = 'Whats'; 
document.getElementsByTagName("p")[0].innerHTML = 'up! ';
document.querySelector("p#myid").innerHTML = 'Dude.';

可能重复您为什么用解决方案编辑问题?感谢您回复!!可能重复您为什么用解决方案编辑问题?感谢您回复!!好的,谢谢,如果我使用document.getElementsByName(“myname”)[0],我已经在我的问题中更改了它?谢谢,我得到了我想要的答案,很乐意帮助c:不过,我建议以后不要用解决方案编辑你的问题;这就是答案的目的。好的,谢谢,如果我使用document.getElementsByName(“myname”)[0],我在我的问题中已经更改了它?谢谢,我得到了我想要的答案,很乐意帮助c:不过,我建议以后不要用解决方案编辑你的问题;这就是答案所在。此
文档.getElementsByName(“myname”).innerHTML
仅在返回的节点列表中创建一个属性
innerHTML
。不行!但这里脚本在document.getElementByName(“myname”).innerHTML='Whats'上抛出错误;脚本的其余部分不会执行此
文档。getElementsByName(“myname”)。innerHTML
仅在返回的节点列表中创建一个属性
innerHTML
。不行!但这里脚本在document.getElementByName(“myname”).innerHTML='Whats'上抛出错误;脚本的其余部分未被执行,将此脚本标记为已接受,因为这解决了问题;虽然没有解释它。getElementsByName()、getElementsByTagName()是与getElementByName()不同的方法,但getElementByTagName()会将此标记为已接受,因为这解决了问题;尽管没有对其进行解释。getElementsByName()、getElementsByTagName()是与getElementByName()和getElementByTagName()不同的方法。