Javascript document.getElementsByTagName在将脚本放在正文之后时返回未定义

Javascript document.getElementsByTagName在将脚本放在正文之后时返回未定义,javascript,html,Javascript,Html,我知道这是一个经常被问到的问题。 我尝试过所有的方法,比如对body标记使用onload(), 将脚本放在DOM元素之后,并使用自调用函数。 但我知道我的元素是未定义的 注意:document.getElementsByTagName(“”)替换为document.getElementById(“”)工作正常。为什么呢?请解释我的两个疑问。这是我的简单代码 拖我 函数loadHandler(){ document.getElementsByTagName('p').setAttribute(

我知道这是一个经常被问到的问题。 我尝试过所有的方法,比如对body标记使用onload(), 将脚本放在DOM元素之后,并使用自调用函数。 但我知道我的元素是未定义的

注意:
document.getElementsByTagName(“”)
替换为
document.getElementById(“”)
工作正常。为什么呢?请解释我的两个疑问。这是我的简单代码


拖我

函数loadHandler(){ document.getElementsByTagName('p').setAttribute('draggable',true); }
getElementsByTagName返回结果数组,而不仅仅是像getElementById这样的单个结果。尝试使用getElementsByTagName('p')[0]。

getElementsByTagName
(顾名思义)返回一个元素数组。如果你想要第一个,就拿第一个

。突出显示{color:red}

拖我

函数loadHandler(){ var elem=document.getElementsByTagName('p')[0]; 元素setAttribute('draggable',true) 元素classList.add('highlight'); }
我猜这是因为'getElementsByTagName'返回一个数组,其中getElementById只返回一个元素。我太慢了:D
getElementsByTagName
return
HTMLCollection
,您可以使用类似数组的表示法访问它的元素。您所说的“它没有帮助”是什么意思?我自己检查过了,这样就消除了这个错误。