簡體   English   中英

無法識別 Javascript 函數

[英]Javascript function isn't recognized

我在 javascript 方面沒有很多知識,所以我不知道這里有什么問題,我在 js 中動態創建 div,每個 div 在被點擊時調用一個函數,但該函數沒有被識別。 這是代碼的一部分

for (......) {
  var listatema = document.createElement("div");
  listatema.innerHTML += "<a href='javascript: void(0)' onClick='functest(" + pag + ")'>" + temat + "</a>";
  document.getElementById('menu').appendChild(listatema);}
}

“tema”是一個文本,函數“functest”有一個參數“pag[aux]”,這是一個數字。

功能是:

function functest(arg){
   console.log(arg)
}

我嘗試的其他替代方法是更改​​: onClick='"+ functest(pag) +"'

我改變了引號 "" 的位置,該功能運行良好,但它在頁面加載時執行,它不等待點擊。

如果您正在執行以下操作,您的代碼應該可以工作:

 function functest(arg) { console.log(arg); } for (var i = 0; i < 10; i++) { var listatema = document.createElement("div"); listatema.innerHTML += "<a href='javascript: void(0)' onClick='functest(" + i + ")'>" + i + "</a>"; document.getElementById('menu').appendChild(listatema); }
 <div id="menu"></div>

但是,我建議使用addEventListener或在文檔元素對象上設置onClick處理程序,而不是設置 innerHTML。 請注意,不建議設置 innerHTML,尤其是在呈現用戶輸入時。 請參閱https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML#Security_thinkations 在您的情況下,這可能不是真正的問題,但如果可以的話,最好避免它:)

 for (var i = 0; i < 5; i++) { var wrapper = document.createElement("div"); var listatema = document.createElement("a"); listatema.textContent = i; listatema.href = "javascript:void(0)"; listatema.addEventListener('click', function(e) { console.log(this.i); }.bind({ i : i })); wrapper.appendChild(listatema); document.getElementById('menu').appendChild(wrapper); }
 <div id="menu"></div>

onClick='functest(\""+ pag +"\")'

你忘了引用參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM