js 如何获取对象名称

JavaScript016

js 如何获取对象名称,第1张

像你所说的abc是字面量,不好找;不过function可以很好找到,不知道是不是你要找的效果:

function abc(){}这里定义了一个函数,通过toString()可以获取到函数的字符串,然后通过正则表达式可以获取到声明的abc,呵呵,之前看angularjs里面的一段代码,希望对你有用

/**

 * @see 鼠标点击拖拽的效果(页面可以同时拖动多个框)

 * @param boxId 整个对象(框)的id(一般为div或table)

 * @param event 内置对象(必须传入)

 */

function mousePlead1(event, boxId) {

    var o = getO(boxId)

    var isIE = document.all ? true : false

    var e = event

    var x = e.offsetX || e.layerX

    var y = e.offsetY || e.layerY

    document.onmousemove = function(e) {

        o.style.filter = 'Alpha(opacity=70)'

        o.style.opacity = '0.7'

        if (isIE) {

            o.setCapture()

        } else {

            window.captureEvents(Event.MOUSEMOVE)

        }

        var e = window.event || e

        if (e.clientX - x >= 0 && e.clientY - y >= 0 && e.clientX - x <= getWinSize()[0] - getO(boxId).offsetWidth

                && e.clientY - y <= getWinSize()[1] - getO(boxId).offsetHeight) {

            o.style.left = (e.clientX - x) + "px"

            o.style.top = (e.clientY - y) + "px"

        }

    }

    document.onmouseup = function(e) {

        document.onmousemove = function() {

        }

        if (isIE) {

            o.releaseCapture()

        } else {

            window.releaseEvents(o.MOUSEMOVE)

        }

        o.style.filter = ""

        o.style.opacity = ""

    }

}

 

/**

* @see 获得对象

* @param id 对象的id(表单元素和其他标签都可以)

* @return Object

*/

function getO(id) {

    return document.getElementById(id)

}

 

/**

 * @see 获得当前窗体的大小(width,height)

 * @return Array 

 */

function getWinSize() {

    var width = parseInt(document.documentElement.clientWidth)

    var height = parseInt(document.documentElement.clientHeight)

    return new Array(width, height)

}

为什么可以通过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>