JavaScript中屬性name與方法名不能相同

weixin_33763244發表於2017-11-15

看看以下這段程式碼對不對,仔細看,你會看出問題。


  1. <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0" class="tabMainBot"> 
  2.   <tr class="trColor">  
  3.      <td> 
  4.      <input type="text" name="existOrNotStatus" value="${existOrNotStatus}"/> 
  5.       <#if existOrNotStatus=="existData"> 
  6.         <input type="button" name="examinAgree" id="examinAgree" value="同意" class="button" onclick="examinAgree()"/> 
  7.       <#else> 
  8.         <input type="button" name="examinReport" id="examinReport" class="button" value="上報"/> 
  9.       </#if> 
  10.       <input type="button" name="examinDisagree" id="examinDisagree" value="不同意" class="button" onclick="refuseReason()"/> 
  11.       <input name="Button1" type="button" class="button" value="返回" onclick="history.back(-1)"> 
  12.     </td> 
  13.   </tr> 
  14. </table> 
  15.   <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0" class="tabMainBot"> 
  16.   <tbody id="reason" style="display:none;"> 
  17.     <tr class="">  
  18.      <td width="20%"> 
  19.           拒絕理由: 
  20.      </td> 
  21.      <td> 
  22.           <textarea id="returnBack" name="refuseReason" id="refuseReason" class="textarea" rows="5" readonly>${refuseReason?default("")}</textarea> 
  23.     </td> 
  24.   </tr> 
  25.   <tr> 
  26.   <td></td> 
  27.     <td> 
  28.         <input type="button" name="examinConfirm" id="examinConfirm" value="確定" onclick="examinConfirm()"/> 
  29.     </td> 
  30.   </tr> 
  31.   </tbody> 
  32. </table> 

找到了嗎?有許多name的值與onclick中的方法名是相同的,開始就這樣寫的,測試程式碼的時候一直沒有任何反應,也不報錯,不管用什麼瀏覽器都是一個樣子-沒有反應,找了半天也不知道是哪兒錯了。叫來同事看了看,他也不知道,這時我說,name的值應該不能與onclick的方法名相同,他說可能是,將同名的方法都改成了另外的名字,測試通過。以前總以為,同一個屬性的name名與方法不能相同,現在看來是,只要是name名就不能與方法名相同,不管是不是在同一個屬性中。

說明了一個問題,起名字很重要,有的時候一不小心就起成關鍵字了,再有的時候就出現了上面這種情況,沒有任何提示的錯誤,這就是所謂的經驗吧。



本文轉自sucre03 51CTO部落格,原文連結:http://blog.51cto.com/sucre/418162,如需轉載請自行聯絡原作者

相關文章