打代码能当饭吃? 2021-08-10 23:28 采纳率: 50%
浏览 138
已结题

急,如题,表格tr标签里面嵌套一个form表单,在JS代码中无法通过form设置的id直接获取form下的子标签input,但是却能通过tr设置的id获取到input标签,这是什么情况


                    <tr<!-- id="myform" -->>
                        <form action="#" method="post" id="myform">
                            <td>1</td>
                            <td><input type="text" name="userName" value="123213" disabled="disabled"></td>
                            <td><input type="text" name="userPwd" value="123213" disabled="disabled"></td>
                            <td><input type="text" name="sex" value="123213" disabled="disabled"></td>
                            <td><input type="text" name="telePhone" value="123213" disabled="disabled"></td>
                        </form>
                        <td><a href="#">删除</a></td>
                        <td><a href="#" onclick="get()">修改</a>&emsp;
                                                       <a href="#" onclick="ban()";document:myform.submit();return false;">保存</a>
                                                </td>
                    </tr>
function get()
  {
  var inputs = document.getElementById("myform").getElementsByTagName("input");
        for(var i = 0;i <inputs.length; i++){
            inputs[i].removeAttribute("disabled");
        }
}
function ban(){
    var inputs = document.getElementById("myform").getElementsByTagName("input");
    for(var i = 0;i < inputs.length; i++){
        inputs[i].setAttribute('disabled', 'disabled');
    }
}

  • 写回答

5条回答 默认 最新

  • 一把编程的菜刀 2021-08-10 23:59
    关注

    因为form不能放在table下的tr上,即不能这样

    <form action="#" method="post" id="myform"><tr></tr></form>
    
    
    ```,也不能放在tr下td上,即不能
    ```html
    <tr><form action="#" method="post" id="myform"><td></td></form></tr>
    
    

    ,要么放在table外

    <form action="#" method="post" id="myform"><table></table></form>
    
    

    ,要么放在

    <td><form action="#" method="post" id="myform"></form></td>
    
    

    ,否则无法通过form读取到form下面的input,这是table的一个特殊性,如果你使用的是div,li这些实现的话,那就可以,维度table tr,td不能这样,因为table,tr,td是一个整体解析

    <style>
     li,form{
         display:inline-block;
     }
     
     </style>
    <div>
        <ul>
    <form action="#" method="post" id="myform">
        <li>1</li>
        <li><input type="text" name="userName" value="123213" disabled="disabled"></li>
        <li><input type="text" name="userPwd" value="123213" disabled="disabled"></li>
        <li><input type="text" name="sex" value="123213" disabled="disabled"></li>
        <li><input type="text" name="telePhone" value="123213" disabled="disabled"></li>
         </form>
        <li><a href="#">删除</a></li>
        <li><a href="#" onclick="get()">修改</a>&emsp; <a href="#" onclick="ban();document:myform.submit();return false;">保存</a></li>
      </ul>
    
    </div> 
    function get()
    
      {
    
      var inputs = document.getElementById("myform").getElementsByTagName("input");
    alert(inputs.length);
            for(var i = 0;i <inputs.length; i++){
                alert(inputs[i].value);
                inputs[i].removeAttribute("disabled");
    
            }
    
    }
    
    function ban(){
    
        var inputs = document.getElementById("myform").getElementsByTagName("input");
    
        for(var i = 0;i < inputs.length; i++){
    
            inputs[i].setAttribute('disabled', 'disabled');
    
        }
    
    }
    
    

    看,用div,ul li实现的就可以

    img

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 8月29日
  • 已采纳回答 8月21日
  • 创建了问题 8月10日