2016-03-07 121 views
0

在待办事项列表中,我正在尝试检查已关闭的项目,但我收到错误消息 - “不是对象中的空值(正在评估' itemText.style')“在没有对象的情况下评估(评估itemText.style)

任何人都可以解释我应该如何改变这一点,使罢工工作? 我也试图避免把CSS放入我的HTML文件中,如果可能的话。

function removeItem() { 
    var boxId = this.id.replace("boxId_", ""); 
    var itemText = document.getElementById("item_", + boxId); 
    itemText.style.setProperty("text-decoration", "line-through"); //error here 
} 

function addNewItem(list, itemText) { 
    totalItems++; 

    var listItem = document.createElement("li"); 
    var checkBox = document.createElement("input"); 
    checkBox.type = "checkbox"; 
    checkBox.id = "cb_" + totalItems; 

    var span = document.createElement("span"); 
    span.id = "item_" + totalItems; 
    span.innerText = itemText; 
    checkBox.onclick = removeItem; 

    listItem.appendChild(checkBox); 
    listItem.appendChild(span); 
    list.appendChild(listItem); 
} 

var btnNew = document.getElementById("btnAdd"); 

var totalItems = 0; 
var inItemText = document.getElementById("inItemText"); 
inItemText.focus(); 

btnNew.onclick = function() { 
    var itemText = inItemText.value; 

    if (!itemText || itemText == "") { 
     return false; 
    } 

    addNewItem(document.getElementById("todoList"), itemText); 
}; 
+1

'VAR itemText =的document.getElementById( “ITEM_” + boxId);' - 不应该有'后 “ITEM_”' –

+0

真棒昏迷。谢谢。 –

回答

2

正是因为这条线

var itemText = document.getElementById("item_", + boxId); 

存在收盘报价后一个逗号。您的代码基本上忽略了boxId,因为它被视为getElementById忽略的另一个参数。

使其

var itemText = document.getElementById("item_" + boxId);