Class 如何判断传入的元素是一个元素还是多个元素?

Class 如何判断传入的元素是一个元素还是多个元素?,class,mootools,element,elements,Class,Mootools,Element,Elements,我正在学习如何使用Mootools,并试图找出如何检测传入的元素是否只是单个元素(例如,$('foo')),还是元素实例(例如,$('class')) 我尝试使用typeOf,但两个示例都返回类型“object” 我知道许多Mootools函数可以同时应用于元素实例和元素实例,但是我的类需要知道它正在接收什么,否则它将不知道迭代所有传入的元素,例如 有什么方法可以区分这两者吗?mootools中的函数类型应该足够了,我建议您检查代码以确保问题不在其他地方。也就是说,您还可以检查“each”函数是

我正在学习如何使用Mootools,并试图找出如何检测传入的元素是否只是单个元素(例如,
$('foo')
),还是元素实例(例如,
$('class')

我尝试使用typeOf,但两个示例都返回类型“object”

我知道许多Mootools函数可以同时应用于元素实例和元素实例,但是我的类需要知道它正在接收什么,否则它将不知道迭代所有传入的元素,例如


有什么方法可以区分这两者吗?

mootools中的
函数类型应该足够了,我建议您检查代码以确保问题不在其他地方。也就是说,您还可以检查“each”函数是否存在,该函数是mootools扩展的阵列原型的一部分:

<div class="myClass"></div>
<div class="myClass"></div>
<div class="myClass"></div>
<div class="myClass"></div>

<div id="myId"></div>

console.log(typeof $$('.myClass').each); // function
console.log(typeof $('myId').each); // undefined
请看这里:


还要注意的是,一组元素的
typeOf
返回值为“element*s*”,其中单个元素为“element”-注意此处的“s”。Javascript的
typeof
操作符将在这两种情况下返回“object”。

真的吗<代码>类型($$(“a”);//元素
。此外,它们通常具有.length属性和类似数组的方法,以及许多通过each映射到数组的元素方法。而单个元素的类型是(document.getElement(“a”);/元素。我倾向于使用,
if(elsArray&&elsArray.length){…}
尽管如果对象上有一个属性为length的元素,这可能会失败。有趣的检查:
instanceOf($$(“a”),元素;//true
:)虽然mootools实际上有typeOf和instanceOf,但您的逻辑可能会中断。您应该隐式地检查原型,而不仅仅是。每个-例如,
i break js
i break js
-
typeof$('myId')。如果您正在测试“函数”,则每个=='string'
-都不会中断。
typeof
在OP的示例中使用是安全的,检查每个都是多余的或备用的方法。
console.log(typeOf($$('.a'));//元素
。。。天哪,我一定是在用原生的typeOf,没意识到Mootools有自己的。感谢你们两位,@DimitarChristoff,@ChrisYou在评论中又做了一次:P Mootools函数-
typeOf
,javascript操作符-
typeOf
。在mootools的旧版本中,函数是
$type
,我认为这是一个更好的名称,它避免了混淆。在moo.js文件的底部放一点
$type=typeOf
也不是什么可怕的主意……大约一年前,使用
$name
约定被认为是不好的(再次)形式,我不记得为什么了——不管怎样,mootools都回避并重命名了。我还认为typeOf和typeOf可能会混淆,尽管一个是函数,一个是操作符,也可以作为函数。。。
console.log(typeOf($$('.myClass'))); // elements
console.log(typeOf($('myId'))); // element