【发布时间】:2011-01-02 10:20:03
【问题描述】:
我有一个名为 getID 的 js 函数,它基本上是 return document.getElementById(id)
我想做另一个函数,getTag 可以return getElementsByTagName。
我似乎无法管理的部分是我希望能够这样称呼他们:
getID('myid').getTag('input') => 所以这将返回 ID 为 myid 的元素内的所有输入元素
谢谢!
ps:如果 getTag 被它自己调用,它也必须工作,但它只会 return document.getElementsByTagName
更新:
感谢所有回复的人!使用您的建议,我想出了这个,这对我很有效:
函数getEl(){ 返回新的getElement(); } 函数 getElement() { var 范围 = 文档; this.by = 函数(数据){ if (data.id) 范围 = scope.getElementById(data.id); if (data.tag) 范围 = scope.getElementsByTagName(data.tag); 返回范围; } }我是这样使用它的:
var inputs = getEl().by({id:"msg", tag:"input"});
【问题讨论】:
-
总是有 1 个项目具有唯一 ID,所以 getID('myid') 永远不会返回集合?
-
问题是你不能让函数根据你使用它的方式改变它的返回类型,所以你必须使用一些技巧来解决这个问题。作为参考,看看jQuery是如何做到的。
-
@caspar:是的,只有一个元素
-
@musicfreak:我真的不需要jQuery的复杂性,它只是一个简单的脚本
-
@Sorin:如果它只是一个简单的脚本,那你为什么需要“语法糖”呢?是纯粹的虚荣心(“......但我希望它以这种方式工作,因为它看起来更好”)还是有任何技术原因你不能简单地使用已经存在的方法?
标签: object javascript