2

我一直在寻找我的问题的可能根源,但一直无法这样做。

我有一些动态创建复选框列表的 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;
}

这将返回要附加到 my 的元素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>

网页如下所示:

在此处输入图像描述

我已经尝试删除我所有的 css 以防它与它有关并将文本嵌套在其他标签中:<p><h1>但没有任何改变。

关于这个问题的根源可能是什么的任何想法。我对网络编程还是很陌生。

谢谢

4

1 回答 1

6

input元素不能有孩子。所以这:

checkBoxElement.appendChild(linkElement);

是不正确的。而是使用包含复选框和链接的标签元素:

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

编辑:您不能单击链接元素来更改复选框的选中状态。因为它刷新了页面(使用href='#')。你想用链接元素做什么?

于 2013-06-11T15:46:36.863 回答