首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JavaScript 參數傳字符串卻變 HTMLInputElement?缺了引號!

     編輯:程式設計疑難解答

錯誤現象

<input type="button" onclick="subNum(<%=rs.getString("name")%>)">
// 生成的 HTML 可能變成:onclick="subNum(張三)"

點擊按鈕,subNum 內 alert(string) 彈出 [object HTMLInputElement];若傳數字 onclick="subNum(123)" 則正常。

根本原因

字符串參數未加引號。瀏覽器將 onclick="subNum(張三)" 解析為:調用 subNum 並傳遞變量 張三(未定義),但在某些上下文中 張三 被誤認為同名 DOM 元素的 ID/Name,導致傳入該元素對象。

正確寫法

<input type="button" onclick="subNum('<%=rs.getString("name")%>')">
// 生成:onclick="subNum('張三')"

單引號包裹字符串字面量,確保 JS 引擎識別為字符串類型。

最佳實踐:分離事件綁定

<input type="button" id="btn" data-name="<%=rs.getString("name")%>">

document.getElementById('btn').addEventListener('click', function() {
    subNum(this.dataset.name); // 安全獲取字符串
});
  • 避免內聯 onclick 字符串拼接的轉義地獄(雙引號、單引號、HTML 實體、JS 轉義交織)。
  • 數據放 data-* 屬性,JS 通過 dataset 讀取,清晰安全。

一對引號,拯救調試半小時;分離綁定,代碼更優雅。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved