getElementByClassName(TagName,classname){
var
tags=document.getElementsByTagName(TagName)
var
list=[]
for(var
i
in
tags)
{
var
tag=tags[i]
if(tag.className==classname){list.push(tag)}
}
return
list
}
console.log(getElementByClassName("div","main"))
//2个地方用错了
一个是
tagname你默认用div了
另一个地方
push方法后面是小括号
()
为什么可以通过id直接访问对象,是因为所有的元素ID都相当于一个保存对象的全局变量。
通过id直接访问对象还存在兼容问题。
建议用document.getElementById标准的形式获取对象。
如果一个元素符合下面两条规则中的任一条,则window对象中必须要有与之对应的一个属性,属性值就是这个对象。
如果一个元素拥有ID属性,那么ID属性的属性值就会成为window对象的属性名.
如果一个元素拥有name属性,那么name属性的属性值就会成为window对象的属性名.但这个元素的标签名必须是: a, applet, area, embed, form, frame, frameset, iframe, img, object,其中的一个。
但是如果网页有两个相同ID的元素,就有点差异了:
<html><head>
<script type="text/javascript">
function getInput() {
var mydiv = document.getElementById("div1")
alert(mydiv.length)//mydiv是DispHTMLElement
alert(div1.length)//div1是DispHTMLElementCollection
}
</script>
</head>
<body>
<div id="div1">123</div>
<div id="div1">456</div>
<input type="button" value="Test" onclick="getInput()" />
</body>
</html>
var Tool = {name: '工具',
print: function(){
console.log( this.name ) // this 既是当前对象
},
subObj:{
name: '子工具',
print: function(){
console.log( this.name ) // this 既是当前`subObj`对象
console.log( Tool.name ) // 上层对象
}
}
}