我的意思是像这样的换行函数:
function $(id) { return document.getElementById(id); }
但在某些代码中这样:
oDiv1 = $("postInfoDiv");
oDiv2 = document.getElementById("postInfoDiv");
alert(oDiv1 == oDiv2); // return false
alert(oDiv1.style); // error
alert(oDiv2.style); // correct
alert(document.getElementById("postInfoDiv").style); // correct
评论意味着我得到了奇怪的结果 我认为第一个警报应该返回true,因为它们是同一个dom对象 我认为第二个警报应该警告类似“对象”或“CSS StyleDeclaration”但不是“已定义”的内容。
那么问题是什么?你遇到过这种问题吗?
感谢。
答案 0 :(得分:2)
您的$
函数可能被框架覆盖。
您应该尝试alert( oDiv1.nodeType )
来查看它是否是DOM元素。 alert( oDiv1.length )
查看它是否为空数组,因为您可能在覆盖$
函数的同一页面上使用jQuery。
oDiv1
可能是包含该项的类数组对象。 oDiv2
是一个实际的DOM引用。您可能需要将oDiv1[0]
与oDiv1
进行比较,其中您引用数组中指向实际 dom元素的第一个元素,以进行公平比较。
function $(id){return document.getElementById(id)}
$('content') == document.getElementById('content')
true
自定义$
函数将完美地工作,但如果您使用框架函数,它将返回该类数组对象而不是DOM元素。
您还可以将您的函数重命名为function getID
,这将是唯一的,不会与框架$
冲突。
答案 1 :(得分:0)
我主要担心的是,当他们第一次阅读你的代码时,它会让人感到困惑,特别是如果他们习惯使用jQuery这样的JavaScript框架进行编码。
仅凭这个原因,我建议您不要将此特定语法用于包裹函数。
答案 2 :(得分:0)