2013-06-11 59 views
1

我已經查找了我的問題的可能根源,但一直無法這樣做。複選框文本不可見

我有一些動態創建複選框列表的Java腳本。其中有些文本與其中的文本有錨鏈接。

它看起來像這樣:

createCheckbox: function (checkBoxDiv, sensorName, sensorId, checked, makeHyperLink, guid) { 
     var liElement = document.createElement("li"); 
     var checkBoxElement = document.createElement("input"); 
     checkBoxElement.setType = "checkbox"; 
     checkBoxElement.name = "sensorName"; 
     checkBoxElement.id = "check" + sensorId; 
     checkBoxElement.setAttribute("type", "checkbox"); 
     checkBoxElement.setAttribute("runat", "server"); 
     checkBoxElement.setAttribute("onchange", "OnCheckedChangedMethod('" + sensorName + "')"); 
     if (checked) 
      checkBoxElement.setAttribute("checked", "true"); 
     if (makeHyperLink) { 
      var linkElement = document.createElement("a"); 
      linkElement.setAttribute("style", "color:white;"); 
      linkElement.setAttribute("href", "#"); 
      linkElement.id = "link" + sensorId; 
      linkElement.text = "" + sensorName; 
      checkBoxElement.appendChild(linkElement); 
     } else { 
      checkBoxElement.setAttribute("text", sensorName); 
     } 
     liElement.appendChild(checkBoxElement); 
     this.checkboxes++; 
     return liElement; 
} 

這將返回元素被添加到我的div

它正確地創建列表和HTML看起來是這樣的:

<ol id="sensorList"><li> 
     Sensors 
    </li><li><input id="check1" type="checkbox" name="sensorName" runat="server" onchange="OnCheckedChangedMethod('0-Predator Simulator (FLIR)')" checked="true"><a id="link1" style="color:white;" href="#"> 
     Item1 
    </a></input></li><li><input id="check2" type="checkbox" name="sensorName" runat="server" onchange="OnCheckedChangedMethod('a')"><a id="link2" style="color:white;" href="#"> 
     Item2 
    </a></input></li> 
</ol> 

的網頁看起來是這樣的:

enter image description here

我曾嘗試刪除所有我的CSS的櫃面它是什麼與此相關並在其他標籤中嵌套文本:<p>,<h1>但沒有任何更改。

關於這個問題的根源可能是什麼的任何想法。我對網絡編程還很陌生。

謝謝

+0

你可以添加一個JSFiddle來演示嗎?另外你爲什麼要把runat = server放在那裏? – Ian

+0

http://jsfiddle.net/4estP/ – Zac

回答

6

input元素不能生小孩。所以這個:

checkBoxElement.appendChild(linkElement); 

是不正確的。 而是使用包含兩個複選框和鏈接標籤的元素:

var labelElement = document.createElement("label"); 
labelElement.appendChild(checkBoxElement); 
labelElement.appendChild(linkElement); 

編輯: 您不能點擊鏈接元素改變複選框選中的狀態。因爲它刷新頁面(與href='#')。你想用鏈接元素做什麼?

+0

不錯,趕上,(對我)可怕的寫作方式,HTML停止了我看到嵌套在'輸入' –

+0

我使用委託來指派一個函數鏈接 – Zac

+0

謝謝你,不知道你不能有一個孩子的輸入,爲什麼這是「寫一個可怕的HTML的方式」? @DavidThomas所以​​我可以改進它。 – Zac