javascript - 带有 DOM 元素的基本方法链
问题描述
我一直在尝试学习如何在 vanilla JS 中链接方法。遵循简单的教程,我可以add()
等等subtract()
。但是,独自一人并尝试链接 DOM 元素,我正在苦苦挣扎。
在以下代码段中没有输出任何内容,我认为这是由于this.textContent
line. 我如何得到这个getId
位?
'use strict'
let chain = {
getId(id) {
document.getElementById(id);
return this;
},
text(content) {
this.textContent = content;
return this;
}
}
window.addEventListener('load', function() {
let dummy = chain.getId('dummy').text('works');
})
<div id='dummy'></div>
解决方案
正如评论 this
中已经解释的那样,不是选定的元素。通过对代码进行最少的重构,您可以element
向对象添加一个新属性,将其设置为getId
并在text
. 例如:
'use strict'
let chain = {
element: null,
getId(id) {
this.element = document.getElementById(id);
return this
},
text(content) {
this.element.textContent = content;
return this;
}
}
window.addEventListener('load', function() {
let dummy = chain.getId('dummy').text('works');
})
<div id='dummy'></div>
推荐阅读
- c++ - 如何将编译器标志从 clang 传递给 nvcc
- python - How to find position of letters in array of strings
- github-actions - 只有主分支中的 .github/workflows 文件夹重要吗?
- asp.net-mvc - How Can I add a dollar symbol in ASP.NET MVC5?
- python - 如果我将脚本命名为“string.py”或“math.py”,“导入”操作的行为会有所不同。为什么会这样?
- scala - Flink does not allow Immutable style setters for POJO object when using scala case classes
- scala - Scala:列出与目录中的正则表达式匹配的文件
- c# - 无法使用 FirstOrDefault() 和条件编写包含查询
- r - 处理图例中的“缺失”标签:tmap
- javascript - 需要解决异步代码的问题