Javascript document.getElementById是一个可以链接的方法吗?
如果我有此模块模式:Javascript document.getElementById是一个可以链接的方法吗?,javascript,chaining,module-pattern,Javascript,Chaining,Module Pattern,如果我有此模块模式: var MODULE = (function(window){ var myPublicStuff = {}; myPublicStuff.myPublicMethod = function(e){ return e; }; return myPublicStuff; })(window); //edit: forgot to put I have this 本作品:(为清晰起见编辑) 但这不管用 MODULE.my
var MODULE = (function(window){
var myPublicStuff = {};
myPublicStuff.myPublicMethod = function(e){
return e;
};
return myPublicStuff;
})(window); //edit: forgot to put I have this
本作品:(为清晰起见编辑)
但这不管用
MODULE.myPublicMethod().document.getElementById('some-element');
MODULE.myPublicMethod().document.getElementById('some-element');
或
我想如果监狱里的前一个成员返回了一个值,你可以将它链接到下一个链接?这在这里不起作用,但我不知道为什么
编辑:谢谢所有的答案。我所要做的就是获取元素并让该方法通过链接将其打印出来。这就是全部。如果我输入'btnPrint',我希望它给我..
如果我在控制台上使用getElementById,这就是我首先为我的模块使用变量时得到的结果(这很有意义)。我只想用链式方法做同样的事情
编辑:为了完整性,这是Travis在JSFIDLE上的内容(谢谢):
。。。
Element.prototype.myPublicMethod=函数(){
//在JavaScript使用的原型方案中,
//元素的当前实例是*this*,
//所以返回这个将返回当前元素
//这是我们开始的。
归还这个;
}
log(document.getElementById(“btnPrint”).myPublicMethod());
我同意。除非绝对必要,否则这看起来很糟糕。要避免使用
v
变量,您需要使用
MODULE.myPublicMethod(document.getElementById('some-element'));
文档
是一个全局属性(属于窗口
对象),您需要从myPublicMethod()
返回该属性才能将其链接起来。考虑到它是标识函数,您甚至可以执行以下操作
MODULE.myPublicMethod(document).getElementById('some-element');
MODULE.myPublicMethod(window).document.getElementById('some-element');
要避免使用
v
变量,需要使用
MODULE.myPublicMethod(document.getElementById('some-element'));
文档
是一个全局属性(属于窗口
对象),您需要从myPublicMethod()
返回该属性才能将其链接起来。考虑到它是标识函数,您甚至可以执行以下操作
MODULE.myPublicMethod(document).getElementById('some-element');
MODULE.myPublicMethod(window).document.getElementById('some-element');
如果未传递任何参数,则可以从函数返回
文档
:
var MODULE = (function(window){
var myPublicStuff = {};
myPublicStuff.myPublicMethod = function(e){
return e || document;
};
return myPublicStuff;
})();
var text = MODULE.myPublicMethod().getElementById('element').innerHTML;
console.log(text);
如果未传递任何参数,则可以从函数返回
文档
:
var MODULE = (function(window){
var myPublicStuff = {};
myPublicStuff.myPublicMethod = function(e){
return e || document;
};
return myPublicStuff;
})();
var text = MODULE.myPublicMethod().getElementById('element').innerHTML;
console.log(text);
document.getElementById是一个可以链接的方法吗
对。它返回一个元素(如果不匹配,则返回未定义的元素)。元素公开一组通用函数,如果元素是特定类型(例如表单),那么它也可能公开一组特定函数
阅读有关泛型元素类型的更多信息,请访问
我想这样做:
v = document.getElementById('some-element'); //works as expected
MODULE.myPublicMethod(v);
在这里,v
很简单,对吗?它只获取带有id=“some element”
的元素。好的,从这里将其传递到myPublicMethod(v)
。当您这样做时,您所做的只是调用一个返回传入的相同值的函数。除此之外,在上面显示的代码中没有赋值或存储
如果您想利用链接设置,您可以在这里做的是从返回值访问v
元素,如下所示:
v = document.getElementById('some-element');
var vId = MODULE.myPublicMethod(v).id;
console.log(vId);// this will log "some-element" to the console
但这不管用
MODULE.myPublicMethod().document.getElementById('some-element');
MODULE.myPublicMethod().document.getElementById('some-element');
所以我在上面解释过,您正在“调用一个返回传入的相同值的函数”,记住myPublicMethod只有返回e代码>在里面?这意味着您使用的是undefined
,因为使用这行代码时没有传递任何内容。换句话说,可以将上面的代码检查为未定义的.document.getElementById('some-element')
,这显然是有问题的
如果我输入'btnPrint',我希望它给我。
例如,您编写的代码可以实现以下功能:
var模块=(函数(窗口){
var myPublicStuff={};
myPublicStuff.myPublicMethod=函数(e){
返回e;
};
归还我的公共物品;
})(窗口);
log(MODULE.myPublicMethod(document.getElementById('btnPrint'))代码>
…
document.getElementById是一个可以链接的方法吗
对。它返回一个元素(如果不匹配,则返回未定义的元素)。元素公开一组通用函数,如果元素是特定类型(例如表单),那么它也可能公开一组特定函数
阅读有关泛型元素类型的更多信息,请访问
我想这样做:
v = document.getElementById('some-element'); //works as expected
MODULE.myPublicMethod(v);
在这里,v
很简单,对吗?它只获取带有id=“some element”
的元素。好的,从这里将其传递到myPublicMethod(v)
。当您这样做时,您所做的只是调用一个返回传入的相同值的函数。除此之外,在上面显示的代码中没有赋值或存储
如果您想利用链接设置,您可以在这里做的是从返回值访问v
元素,如下所示:
v = document.getElementById('some-element');
var vId = MODULE.myPublicMethod(v).id;
console.log(vId);// this will log "some-element" to the console
但这不管用
MODULE.myPublicMethod().document.getElementById('some-element');
MODULE.myPublicMethod().document.getElementById('some-element');
所以我在上面解释过,您正在“调用一个返回传入的相同值的函数”,记住myPublicMethod只有返回e代码>在里面?这意味着您使用的是undefined
,因为使用这行代码时没有传递任何内容。换句话说,可以将上面的代码检查为未定义的.document.getElementById('some-element')
,这显然是有问题的
如果我输入'btnPrint',我希望它给我。
例如,您编写的代码可以实现以下功能:
var模块=(函数(窗口){
var myPublicStuff={};
myPublicStuff.myPublicMethod=函数(e){
返回e;
};
归还我的公共物品;
})(窗口);
log(MODULE.myPublicMethod(document.getElementById('btnPrint'))代码>
…
如果在没有任何输入参数的情况下调用myPublicMethod()是否会返回未定义的值?是。这就是为什么我想调用getElementById函数。MODULE.myPublicMethod().document.getElementById(
…)
只有在MODULE.myPublicMethod
返回了一个