【问题标题】:javascript checkbox create elementjavascript复选框创建元素
【发布时间】:2020-11-16 18:05:44
【问题描述】:

我正在尝试将复选框列表添加到表单中。当我使用以下代码时,我得到了数组中的所有项目但没有复选框,所以我不能选择任何东西。我确信有一个非常简单的解决方案,但我看不出我做错了什么(我是新手)。非常感谢您的帮助。代码如下:

var check_value = new Array()
check_value[0] = "I work at home"
check_value[1] = "Train/Subway"
check_value[2] = "Walk"
check_value[3] = "Bicycle"

for(count in check_value)
    {
    var ptworkinfo=document.createElement("input");
    ptworkinfo.type="checkbox";
    ptworkinfo=(check_value[count] + "</br>");
    ptworkinfo.id="ptworkinfo";
    document.write(ptworkinfo);
    count+=count;
    }

【问题讨论】:

  • 第二个 "ptworkinfo=" 覆盖第一个。

标签: javascript checkbox createelement


【解决方案1】:

这里有几个问题:

1) 永远不要使用 document.write - 您需要使用的标准纯 javascript 实现是 appendChild 到父元素。例如:

var parentElement = document.getElementById('myParentElement');

if(parentElement != null)
   parentElement.appendChild(myChildElement);

2) 使用这些知识,您可以通过简单的修改语句轻松添加元素:

var parentElement = document.getElementById('myParentElement');

for(var count in check_value)
{
    var newCheckBox = document.createElement('input');
    newCheckBox.type = 'checkbox';
    newCheckBox.id = 'ptworkinfo' + count; // need unique Ids!
    newCheckBox.value = check_value[count] + '<br/>';

    parentElement.appendChild(newCheckBox);
}

【讨论】:

  • 谢谢,@Tejs。我最初使用的是 appendChild,但我不断收到此消息:“NOT_FOUND_ERR:DOM 异常 8:尝试在不存在的上下文中引用节点。”所以我切换到 document.write 以便我可以看到复选框发生了什么。我现在就试试你的建议。再次感谢。
  • 我注意到您对此帖子的编辑被拒绝;虽然它被拒绝了,但复选框没有文本的原因是您只添加了复选框元素;复选框没有与之关联的文本,除非您以某种方式在复选框旁边添加 &lt;span&gt;&lt;div&gt; 或其他带有文本的容器。
  • 非常感谢@Tejs!我不知道为什么编辑被拒绝 - 它只包含更新的代码。我现在正在尝试。
【解决方案2】:

看起来您刚刚忘记在其中一行添加.value。相反,它会用字符串覆盖您作为输入框创建的变量。

...
    ptworkinfo.value =(check_value[count] + "</br>");
...

【讨论】:

  • 我已插入 .value 并删除了 count+=count,并取出了 document.write 并插入了 appendChild。现在我得到一排四个复选框,旁边没有文字。代码如下。
  • 需要单独添加文字。查看此帖子:stackoverflow.com/questions/866239/…
【解决方案3】:

首先创建一个输入类型的元素。然后将它的类型属性设置为复选框。这可以通过下面提到的 2 种方式中的任何一种来完成。

const checkBox = document.createElement('input')
checkBox.type = 'checkbox'

也可以使用 setAttribute 函数设置属性。第一个参数说明正在更新的属性。这里 type 属性更新为复选框的类型。

checkBox.setAttribute('type','checkbox')

【讨论】:

    【解决方案4】:

    这是根据上述建议更新的新代码(谢谢)。我现在得到一排复选框,旁边没有文字。此外,奇怪的是,每个复选框之后也没有中断。就像行“ ptworkinfo.value=(check_value[count] + ''); ”只是没有通过。有什么想法/建议吗?

    var residence = document.getElementById('residence');
    
    var check_value = new Array( )
    check_value[0] = "I work at home"
    check_value[1] = "Train/Subway"
    check_value[2] = "Walk"
    check_value[3] = "Bicycle"
    
    for(var count in check_value)
        {
        var ptworkinfo=document.createElement("input");   
        ptworkinfo.value=(check_value[count] + '</br>');
        ptworkinfo.type="checkbox";
        ptworkinfo.id="ptworkinfo" + count;
        residence.appendChild(ptworkinfo);
        }
    

    【讨论】:

    • 谢谢,@ShawnSteward。我尝试使用新代码编辑帖子,但编辑被拒绝(我不知道为什么)。并感谢上一个问题的链接——我最后得到了每个复选框的文本,但只有“标签”这个词。我试图将 label.value 分配给数组元素,但这不起作用。还有其他想法吗?非常感谢。
    • 继续发布您用于添加标签的更新代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 2019-08-09
    • 2015-10-23
    • 2013-04-15
    • 2010-10-26
    • 2014-05-20
    相关资源
    最近更新 更多