document.getElementsByTagName('div')
返回一个元素数组。
document.getElementsByTagName('div')[0]
返回单个元素。
但出于某种原因,
var firstDiv = document.getElementsByTagName('div')[0]
返回'undefined'。奇怪的是,全局变量似乎没有这个问题。
firstDiv = document.getElementsByTagName('div')[0]
返回一个元素。
答案 0 :(得分:2)
我的通灵能力告诉我你的代码在浏览器解析正文之前就已经运行了。
将<script>
块移动到页面底部。
答案 1 :(得分:1)
var
关键字应该归咎于此。注意这个
var x = ...
是一个变量声明,而
x = ...
是表达式语句。表达式语句返回一个值。声明没有。包含初始化和一些表达式的声明初始化变量,但初始化程序的值不成为声明的值(因为声明没有值)。
所有这些“返回”未定义:
var a = document.getElementsByTagName('div')
var b = document.getElementsByTagName('div')[0]
所有这些都返回一些东西(一组div或第一个div):
document.getElementsByTagName('div')
document.getElementsByTagName('div')[0]
a = document.getElementsByTagName('div')
b = document.getElementsByTagName('div')[0]