【问题标题】:In HTML, with Javascript, create new radio button and its text?在 HTML 中,使用 Javascript,创建新的单选按钮及其文本?
【发布时间】:2014-06-19 06:35:28
【问题描述】:

我希望当检查表单(form1)的“是”单选按钮时,出现一个新表单(Form2),其中两个单选按钮及其文本“是”和“否”。通过form1的“是”按钮中的“onclick”事件,我设法使用两个单选按钮使新表单出现,但我无法显示它们的文本。由于单选按钮没有“innerHTML”,我尝试将文本添加为​​纯文本或“标签”,但它不起作用。 是语法问题还是逻辑问题(不能与按钮同时创建文本)?感谢您的帮助。

在我的 HTML 正文中,我有这个:

<form id="form1">
<input type="radio" id= "form1_no" value="no" checked>
   <label for = "form1_no" >No</label>
<input type="radio" id= "form1_yes" value="yes" onClick= exam()>
   <label for = "form2_yes" >Yes</label>
</form> 

函数exam()是:

<script type='application/javascript'>

function exam() {                  

    var inputno = document.createElement("input");
    inputno.type = "radio";
    inputno.id = "form2_no";
    inputno.value = "no";
    inputno.onclick = function () {alert("I select No in Form 2")}; 
    document.getElementById("form2").appendChild(inputno); // this is working

    var inputyes = document.createElement("input");
    inputyes.type = "radio";
    inputyes.id = "form2_yes";
    inputyes.value  ="yes";
    inputyes.onclick = function () {alert("I select Yes in Form 2")};
    document.getElementById("form2").appendChild(inputyes); // this is working

    // now, the code that is not working:

    // 1st tentative (adding "Yes" and "No" as plain text after their radio button):
    var textno = "No";
       document.getElementById("form2_no").appendChild(textno);
    var textyes = "Yes";
       document.getElementById("form2_yes").appendChild(textyes);

    // 2nd tentative (adding "Yes" and "No" as labels to their radio button):
    var labelno = document.createElement("label"); 
    labelno.for="form2_no"; 
    labelno.innerHTML = "No"; 
    document.getElementById("form2_no").appendChild(labelno);
    var labelyes = document.createElement("label"); 
    labelyes.for="form2_yes"; 
    labelyes.innerHTML = "Yes"; 
    document.getElementById("form2_yes").appendChild(labelyes);

}      
</script>

【问题讨论】:

    标签: javascript html forms javascript-events


    【解决方案1】:

    这样的东西可以创建一个按钮和标签。

    <div id="radio_home"></div>
    
    <script>
    
      var radio_home = document.getElementById("radio_home");
    
      function makeRadioButton(name, value, text) {
    
        var label = document.createElement("label");
        var radio = document.createElement("input");
        radio.type = "radio";
        radio.name = name;
        radio.value = value;
    
        label.appendChild(radio);
    
        label.appendChild(document.createTextNode(text));
        return label;
      }
    
      var yes_button = makeRadioButton("yesbutton", "yes", "Oh yea! do it!");
      radio_home.appendChild(yes_button);
    </script>
    

    【讨论】:

    • 谢谢。但是这样做,我有一个问题。如果在第一种形式中,我改变主意,选中“否”按钮,然后再次改变主意并选中“是”按钮,则将在第二种形式中创建两个新按钮,即第二种形式现在将有 2 个“是”按钮和 2 个“否”按钮...
    • 那么您在错误的时间向错误的表单添加按钮。这是一个新问题,您必须发布相关代码。
    • 没关系,我解决了这个pb。通过将变量id添加到makeRadioButton函数中,在其中添加radio.id = id,并在您提出的makeRadioButton函数的内容之前编码var exist = document.getElementById(id); if (exist === null) {和之后编码}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多