Javascript 在数据表中使用onchange函数

Javascript 在数据表中使用onchange函数,javascript,php,datatables,Javascript,Php,Datatables,我正在使用Datatables在表中创建表单。我有一个选择类型的输入,该值将根据另一个输入而改变。我现在的问题是它只在第一排工作。这是我的测试用例 <table id="example" class="display nowrap" width="100%"> <thead> <tr> <th>ID</th> <th>select 1</th> <t

我正在使用Datatables在表中创建表单。我有一个选择类型的输入,该值将根据另一个输入而改变。我现在的问题是它只在第一排工作。这是我的测试用例

<table id="example" class="display nowrap" width="100%">
   <thead>
     <tr>
       <th>ID</th>
       <th>select 1</th>
       <th>select 2</th>
     </tr>
    </thead>
   <tbody>
     <tr>
       <td>1</td>
       <td>
         <select id="input1" class="form-control">
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select>
       </td>
       <td><select id="input2"></select></td>
     </tr>
     <tr>
       <td>2</td>
       <td>
         <select id="input1" class="form-control">
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select>
       </td>
       <td><select id="input2"></select></td>
     </tr>
     <tr>
       <td>3</td>
       <td>
         <select id="input1" class="form-control">
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select>
       </td>
       <td><select id="input2"></select></td>
     </tr>
     <tr>
       <td>4</td>
       <td>
         <select id="input1" class="form-control">
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select>
       </td>
       <td><select id="input2"></select></td>
     </tr>
     <tr>
       <td>5</td>
       <td>
         <select id="input1" class="form-control">
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select>
       </td>
       <td><select id="input2"></select></td>
     </tr>
   </tbody>
  </table>

身份证件
选择1
选择2
1.
1.
2.
3.
2.
1.
2.
3.
3.
1.
2.
3.
4.
1.
2.
3.
5.
1.
2.
3.

非常感谢您在这方面提供的任何帮助:)

用以下代码替换您的代码:

<!DOCTYPE html>
<html>
    <head>
        <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>

        <link href="https://nightly.datatables.net/css/jquery.dataTables.css" rel="stylesheet" type="text/css" />
        <script src="https://nightly.datatables.net/js/jquery.dataTables.js"></script>

        <meta charset=utf-8 />
        <title></title>
    </head>
    <body>
        <div class="container">
            <table id="example" class="display nowrap" width="100%">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>select 1</th>
                        <th>select 2</th>
                    </tr>
                </thead
                <tbody>
                    <tr>
                        <td>1</td>
                        <td>
                            <select id="input1" data-attr="1" class="form-control selectBox">
                                <option value="1">1</option>
                                <option value="2">2</option>
                                <option value="3">3</option>
                            </select>
                        </td>
                        <td><select id="selectedInput1"></select></td>
                    </tr>
                    <tr>
                        <td>2</td>
                        <td>
                            <select id="input2" data-attr="2" class="form-control selectBox">
                                <option value="1">1</option>
                                <option value="2">2</option>
                                <option value="3">3</option>
                            </select>
                        </td>
                        <td><select id="selectedInput2"></select></td>
                    </tr>
                    <tr>
                        <td>3</td>
                        <td>
                            <select id="input3" data-attr="3" class="form-control selectBox">
                                <option value="1">1</option>
                                <option value="2">2</option>
                                <option value="3">3</option>
                            </select>
                        </td>
                        <td><select id="selectedInput3"></select></td>
                    </tr>
                    <tr>
                        <td>4</td>
                        <td>
                            <select id="input4"  data-attr="4" class="form-control selectBox">
                                <option value="1">1</option>
                                <option value="2">2</option>
                                <option value="3">3</option>
                            </select>
                        </td>
                        <td><select id="selectedInput4"></select></td>
                    </tr>
                    <tr>
                        <td>5</td>
                        <td>
                            <select id="input5" data-attr="5" class="form-control selectBox">
                                <option value="1">1</option>
                                <option value="2">2</option>
                                <option value="3">3</option>
                            </select>
                        </td>
                        <td><select id="selectedInput5"></select></td>
                    </tr>
                </tbody>
            </table>
        </div>
        <script>
            $(document).ready(function () {
                var table = $('#example').DataTable();
                $("#example tbody tr td .selectBox").on("change", function () {
                    var s1 = document.getElementById($(this).attr('id'));
                    var s2 = document.getElementById("selectedInput" + $(this).attr('data-attr'));
                    s2.innerHTML = "";
                    if (s1.value == "1") {
                        var optionArray = ["|--Select--", "ABC|ABC", "DEF|DEF", "GHI|GHI", ]
                    } else if (s1.value == "2") {
                        var optionArray = ["|--Select--", "JKL|JKL", "MNO|MNO", "PQR|PQR", ]
                    } else if (s1.value == "3") {
                        var optionArray = ["|--Select--", "STU|STU", "VWX|VWX", "YZ|YZ", ]
                    }

                    for (var option in optionArray) {
                        var pair = optionArray[option].split("|");
                        var newOption = document.createElement("option");
                        newOption.value = pair[0];
                        newOption.innerHTML = pair[1];
                        s2.options.add(newOption);
                    }
                });
            });
        </script>
    </body>
</html>

身份证件
选择1
选择2

是的,这可能是因为您在javascript中是通过Id选择项目的。所以JS只选择第一个项目。就像一个魅力!还有一个问题,如果我使用ajax加载表,我应该如何更改selectBox上的“data attr”部分?