【发布时间】:2017-04-17 01:25:46
【问题描述】:
当尝试传递由document.createElement 方法创建的元素时,我们会遇到异常结果:
var Todo = (function () {
return {
items: [],
addItem: function () {
var task = document
.querySelector('#top-todo')
.value
.trim()
if (task !== '') {
this.items.push({ task, complete: false })
document.querySelector('#top-todo').value = ''
console.log('Added item: ' + task)
var newTodo = document.createElement('li')
.appendChild(document.createElement('p'))
.appendChild(document.createTextNode(task))
document.querySelector('#todo-list').appendChild(newTodo)
}
}
}
})()
<div>
<ul id="todo-list">
<li>
<input id="top-todo" placeholder="I need to..." type="text" />
</li>
</ul>
<input onclick="Todo.addItem()" type="button" value="add" />
</div>
我们只看到将 textNode 元素附加到 #todo-list 元素,而不是完全失败或 typeError。这种行为的原因是什么?有没有一种有效的方法可以将该方法用作附加或插入的参数?
【问题讨论】:
-
@charlietfl 我不确定你的意思。
-
不要将 DOM API 视为 fluent/chainable。它们并非设计为可链接的。如果你想链接使用 jQuery
标签: javascript dom