一个很诡异的javascript问题

一个朋友问我,为什么我写这个简单的html文件,点增加老是出错呢?

Html文件如下

<html>
<body>
<script. language="javascript">
function add(){
  var form=document.forms[0];
  form.method.value='add';
 alert(1);
}

function update(vl){
  var form=document.forms[0];
  form.method.value='update';
  form.sysid.value=vl;
  alert(2);
}

</script>
<form. name="Cgd_BillForm" method="post" action="/sample/view/billMaster.do">
<input type="hidden" name="method" value="">
<input type="hidden" name="sysid" value="">

    
 <table>
     <tr>采购请购单</tr>
     <tr>
         <td>
         <input type="button" name="add" value="增加" nclick="javascript.:add()"/>
         </td>
     </tr>
  <tr>
   <td><b>单据编号</b></td>
   <td align="center"><b>单据日期</b></td>
   <td><b>金额</b></td>
   <td colspan="2"><b>编辑</b></td>
   
  </tr>
  
   <tr>
       
    <td><b>001</b></td>
    <td><b>2008-01-23 19:24:22.0</b></td>
    <td><b>2000.0</b></td>
    <td><input type="button" name="update" value="修改" nclick="javascript.:update('ff80808117a664370117a6643ec50001')">
                <td><input type="button" name="delete" value="删除" nclick="javascript.:delete('ff80808117a664370117a6643ec50001')">
   </tr>
  
 </table>
</form>
</body>
</html>

 

   咋一看,这个html文件应该没有任何问题.是的..这个错误很难好现,就算你不停的用alert去试,也是有困难的.大家知道,Javascript

是一个解释性的编程语言,它是一个绝对的面象对象的语言,另何变量,函数,方法,都是一个对象.它又是弱变量型的,有时候给编程带来

或多或少的困难.上面的html错误在于,定义了两个相同的全局变量,比如:add这个标识在script区域中定义过,然后又在button中定义

过..最后起作用的只有button,所以当你调用add方法时,系统当然报错.嘿,问题很诡异吧..以后做事,还是小心再小心,有时候不

要画蛇添足,比如上面的button的name就没有必要去定义.对系统不会有影响的.

本博客均为原创,转载请注明出处.
原文地址:https://www.cnblogs.com/mzhanker/p/2082212.html