【发布时间】:2017-04-26 21:57:59
【问题描述】:
我正在用 JavaScript 创建自己的库。我已经制作了一些基本功能,例如.css()、.text() 等。它适用于我,但是当我在一个元素中添加这两种方法时,它只应用第一种方法而忽略第二种方法。
例如:
__('p').text('Hello World').css({'color':'red'});
只有hello world会生效,.css()不会生效。
这是我的代码:
function __(selector) {
var _kean = {};
_kean.selector = selector;
if (typeof selector == 'object' || typeof selector == 'undefined') {
_kean.element = [_kean.selector];
} else if (typeof selector == 'string') {
_kean.element = document.querySelectorAll(_kean.selector);
} else if (selector instanceof HTMLElement) {
_kean.element = [selector];
} else {
_kean.element = document.querySelectorAll(_kean.selector);
}
_kean.text = function(elems) {
return [].slice.call(_kean.element).map(function(el, i) {
if(!elems) return el.textContent;
return el.textContent = elems;
});
return _kean;
}
_kean.css = function(propval) {
_kean.element.forEach(function(elements) {
Object.assign(elements.style, propval);
});
return _kean;
}
return _kean;
}
【问题讨论】:
-
"并忽略第二个" - 如果您检查浏览器的控制台,我想您会发现它与其说是“忽略”,不如说是“崩溃”。无论如何,在你的
.text()函数之后链接任何东西是没有意义的,因为显示的文本函数返回一个文本数组.. -
不工作先生
-
return _kean;应该这样做。阅读链接的重复问题,也许还有一些与该问题相关的其他问题。 -
嘿,我记得那个代码!好吧,您需要考虑每个函数需要返回什么。链接时,您需要返回包含要在链中调用的所有函数的对象。那是
_kean。可能需要将一些结果作为属性分配给该对象,而不是返回它们,因为这些结果(例如数组)没有您想要链接的函数。 -
还是不行,先生:(
标签: javascript jquery