Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript document.getElementById是一个可以链接的方法吗?_Javascript_Chaining_Module Pattern - Fatal编程技术网

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
返回了一个