如何使用javascript函数自动生成id

问题描述 投票:0回答:1

如果我在代码中的 id 是自动增量的,有人可以告诉我如何使用 java 脚本的每个 id 吗? 我想让根据数据库中的值自动生成的单选按钮的每个 id 都有自己的功能,但我只知道只使用基本 id。自动增量 ID 我仍然不知道如何检索它。

Java 脚本示例(这将使 id 自动增加并取消选中按钮):

<script>

var list1 = document.getElementsByClassName("sos");
    for (var i = 0; i < list1.length; i++) {
    list1[i].setAttribute("id", "s" + i);
}

var list2 = document.getElementsByClassName("des");
for (var i = 0; i < list2.length; i++) {
    list2[i].setAttribute("id", "d" + i);
}

function test1(){
    if(document.getElementById('s').checked){
    document.getElementById('d').checked = false;
   }
}

function test2(){
if(document.getElementById('d').checked){
    document.getElementById('s').checked = false;
   }
}

</script>

这是我的单选按钮:

<?php
   echo "<td align = 'center'>";
   echo"<input class ='sos' id='s' onchange='test();' type ='radio' name='x1'  required  value ='".$col['id_latihan']."'>";
   echo"</td>";



   echo "<td align = 'center'>";
   echo "<input class='des' id='d' onchange='test2();' type ='radio' name='x2'  required  value ='".$col['id_latihan']."'>";
   echo"</td></tr>";

?>

我想让单选按钮 1 如果选中,单选按钮 2 将取消选中。但该功能仅适用于第一行。由于 id 不同,自动生成的单选按钮将不起作用。谢谢

javascript html
1个回答
0
投票

最好在这样的函数中传递

this
。单个函数就足够了。他们将验证id。然后找到相反的id并增加id号

示例代码

function test(that) {
    var f = that.id.match(/([a-z])(\d+)/)
    var op_id=f[1]=='s'? 'p':'s';

    if (that.checked) {
        document.getElementById(op_id+f[2]).checked = false;
    }
}
<input id="s1" type="checkbox" onclick="test(this)"><br>
<input id="p1" type="checkbox" onclick="test(this)"><br><br>
<input id="s2" type="checkbox" onclick="test(this)"><br>
<input id="p2" type="checkbox" onclick="test(this)"><br><br>
<input id="s3" type="checkbox" onclick="test(this)"><br>
<input id="p3" type="checkbox" onclick="test(this)"><br><br>
<input id="s4" type="checkbox" onclick="test(this)"><br>
<input id="p4" type="checkbox" onclick="test(this)"><br><br>
<input id="s5" type="checkbox" onclick="test(this)"><br>
<input id="p5" type="checkbox" onclick="test(this)"><br>
© www.soinside.com 2019 - 2024. All rights reserved.