当试图通过由document.createElement
方法创建的元件,现在遇到不寻常的结果:作为参数传递时,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
元件。这种行为的原因是什么?有没有一种有效的方法来使用该方法作为参数来追加或插入?
@charlietfl我不确定你的意思。 –
不要将DOM API视为流畅/可链接。它们的设计不是可链接的。如果你想链接使用jQuery – slebetman