用js写根据类名获取HTML标签对象的方法

JavaScript013

用js写根据类名获取HTML标签对象的方法,第1张

function

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 ) // 上层对象

        }

    }

}