2012-01-26 100 views
1

我正在通過appendchild創建複選框。我希望能夠檢查他們的狀態。我知道格式應該是document.form.checkboxname.value,但無論使用表單名稱或複選框名稱的組合如何,都不會給我一個迴應。如何從Javascript中的appendchild複選框獲取元素狀態?

 var myParagraph=document.getElementById("myLine"); 
      myForm = document.createElement("FORM"); 
      myForm.setAttribute("name", "myForm2"); 
      mytable = document.createElement("TABLE"); 

     var CB_Delete = document.createElement('input'); 
      CB_Delete.type = "checkbox"; 
      CB_Delete.name = "CB_Test"; 
      CB_Delete.setAttribute("name", "CBTest2"); 
      CB_Delete.value = 2; 
      CB_Delete.onclick = answer; 
      theCell.appendChild(CB_Delete); 

回顧我想要回答函數給我一個警報,如果複選框被選中或沒有。非常感謝! 要澄清什麼我替換警報(document.form.checkbox.value)中的表單和複選框?

+0

您將複選框的不同值賦予屬性和屬性'name'。我不認爲這是必要的。 – pimvdb

+0

爲什麼複選框被分配一個'.value' –

+0

@Matt爲什麼它會成爲一個問題? – kapa

回答

3

CB_Delete.checked應該工作。見HTMLInputElement on MDN

console.log(CB_Delete.checked); 

jsFiddle Demo


  • 爲了讓您的複選框選中或取消選中,你會做分別或CB_Delete.checked = trueCB_Delete.checked = falsechecked是預期具有布爾值的對象屬性。 CB_Delete.checked只是查詢其當前值。

  • 在您的事件處理函數中,您可以引用當前處理事件的元素爲this。所以從我以前的jsfiddle的例子:

    CB_Delete.onchange = function() { 
        console.log(this.checked); /* this refers to the checkbox here */ 
    }; 
    

    你可以在你的answer功能使用this爲好。

  • 您可以閱讀更多關於handling events on Quirksmode

  • 注意:使用CB_Delete.onchange是附加的事件處理程序的大部分時間一個很舊,並沒有真正推薦的方式。使用CB_Delete.addEventListener('change', answer, false)是正確的方法。較早的IE會遇到問題,但他們有attachEvent()。你可以閱讀約this technique and why to use it on Quirksmode(文章是3歲,在閱讀像"Unfortunately few browsers support it at the moment."這樣的東西時考慮到這一點)。要隱藏瀏覽器差異,可以使用類似jQuery這樣的庫。

+0

我必須在這裏錯過一些非常重要的東西。謝謝您的回答。 不會CB_Delete.checked只是使複選框被選中? 和console.log(CB_Delete.checked);只是告訴我,CB_Delete不是一個可識別的對象。 從函數分離函數「答案」什麼我會讓警報告訴我任何有關複選框(函數值等)?無論我嘗試什麼,都無法找到複選框。謝謝你的耐心。 – Zombian

+0

@Zombian我會給我的答案增加一些細節。 – kapa

+1

非常感謝你!你解決了我的問題,並給了我一些很好的文檔。我很感激你爲了增加更多而花費時間爲我做這件事。 – Zombian

相關問題