2017-08-04 48 views
1

我正在做一個基本的(因爲我不熟練,就像玩弄小東西學習)數據庫項目,通過檢查複選框來設置。但是,當試圖檢查一個盒子並閱讀是否檢查或未檢查時,它總是讀取「空白」。我試過。價值,.innerHTML。選中。沒有什麼讓我在那裏。我所要做的就是用getElementById獲取輸入(即檢查或不檢查)並將其存儲在var中,然後在比較布爾爲true時進行比較,並相應地設置數據庫中的值。無法讀取value值爲innerHTML的複選框的值,或者選中

function createSheet() { 

var _container = document.getElementById("container"); 

checkbox = document.createElement("input"); 
    checkbox.type = "checkbox"; 
    var valueOfId = document.getElementById("idString").checked; 

錯誤信息:無法讀取'檢查'爲null的屬性。

編輯:謝謝你的答案!我沒有表現出這些行,因爲我沒想到他們要緊的是多了,但我錯了,所以在這裏,他們是:

function createSheet() { 
var _container = document.getElementById("container"); 
for (var i = 0; i < 4; i++) { 
    p = document.createElement("p"); 
    spanBird = document.createElement("span"); 
    checkbox = document.createElement("input"); 
    checkbox.type = "checkbox"; 
    checkbox.id = "myCheck" + i; 
    checkbox.value = 0; 
    checkbox.checked = birds.birdList[i].seen; 
    spanBird.innerHTML = birds.birdList[i].name; 
    p.appendChild(spanBird); 
    p.appendChild(checkbox); 
    container.appendChild(p); 
    console.log(document.getElementById("myCheck" + i)); 
    document.getElementById("myCheck" + i).addEventListener("click", readBox); 
    } 
} 

function readBox(){ 
getId(); 
theId = theId.substring(7); 
console.log("idString: " + idString); 
var valueOfId = document.getElementById("idString").checked; 
} 

和HTML寫着:

<section id="container"> 

    </section> 

/EDIT

有什麼建議嗎?

+0

「_any建議?_」 爲我們提供了一個[MCVE。 – csmckelvey

+1

您創建了一個輸入,將其類型更改爲複選框,但從未爲其分配過一個ID ....然後試圖通過一個ID獲取元素?因此id = idString的元素爲空 –

回答

1

實際上,這並不是檢查的屬性爲空,您的父對象爲空。

我的意思是,這部分:

document.getElementById("idString") 

被返回null,所以它不能訪問checked屬性。

您需要先設置元素的ID與此

checkbox = document.createElement("input"); 
checkbox.type = "checkbox"; 
checkbox.setAttribute("id", "idString"); 
document.body.appendChild(checkbox) 
var valueOfId = document.getElementById("idString").checked; 

那麼你應該能夠訪問值

3

兩件事情:

  • 你不需要document.getElementById,因爲你已經有checkbox。如其他人所述,要使用document.getElementById,需要將ID設置爲複選框Element。而且您還需要將該元素添加到文檔中。

checkbox = document.createElement("input"); 
 
checkbox.type = "checkbox"; 
 
checkbox.id = "idString" 
 

 
console.log(checkbox.checked) 
 

 
document.body.appendChild(checkbox) 
 

 
console.log(document.getElementById("idString").checked)

+0

不確定第一個項目符號點的含義。我該如何使用複選框? 而第二個重點是我的不好。我沒有刪除所有的代碼,但現在它已經更新了,我似乎無法解決問題。 –

1

爲了工作,你的ID首先需要爲你的元素像這樣創建的屬性。

如果未實例化,則無法通過ID調用。試用。

HTML

<div id="content"></div>  

JAVASCRIPT

checkbox = document.createElement("input"); 
    checkbox.setAttribute("id", "idString"); 
    checkbox.setAttribute("type", "checkbox"); 
    checkbox.setAttribute("value", "0"); 

    var element = document.getElementById("content"); 
    element.appendChild(checkbox); 
    var valueOfId = document.getElementById("idString").value; 
    console.log(valueOfId);