2012-04-13 64 views
1

嗯,我有一些複選框id ='0','1','2','3'等。所以我需要獲取複選框的文本。這裏是PHP中複選框的代碼。Javascript innerhtml的複選框

'<input id="'.$i.'"type="checkbox" name="option1" value="a1" onclick="checkYears()">'.$years[$i].'</input> 

所以我需要得到$年[$ i]值。我正在使用這段代碼。

while (bool==false) 
    { 
     if (document.getElementById(i)!=null) 
     { 
      if (document.getElementById(i).checked) 
      { 
       years.push(1); 
       yearsValue.push(document.getElementById(i).innerHTML); 
       document.getElementById(i).innerText="WORKS"; 
       console.log(yearsValue[i]); 
      } 
      else 
      { 
       years.push(0); 
       yearsValue.push(document.getElementById(i)).innerHTML); 
       console.log(yearsValue[i]); 
      } 
     } 
     else 
     { 
      bool=true; 
     } 
     i++; 
    } 

0和1的加好了,但是當我試圖使用innerHTML存在和CONSLE未定義值。

有什麼建議嗎?

+0

謝謝你,爲你解答他們是樂於助人。 – 2012-04-13 15:56:45

回答

6

InnerHTML獲取元素的HTML 內容。即開始標籤和結束標籤之間的數據。輸入是空元素,它們不能有內容(在HTML中(與XHTML相反),它們也不能有結束標記)。您的HTML無效,您應該使用a validator

你可能想是這樣的:

<label> 
    <input type="checkbox"> 
    <span>Text label</span> 
</label> 

然後你就可以得到:

checkbox.parentNode.innerHTML; 

checkbox.parentNode.getElementsByTagName('span')[0].innerHTML 
0

,因爲該元素被認爲是自閉的輸入元素不具備的innerHTML:

<input type="checkbox" name="checkbox" value="1" />

0

你不能因爲<input>沒有結束標記,所以也沒有有innerHTML財產:

必須有一個開始標記,並且不能有結束標記。

MDN

我建議您使用label和輸入的組合。

0

理想情況下,輸入元素不會有任何innerHTML。這意味着你不能在輸入元素中包含HTML內容。你可以只有輸入元素的值。