簡體   English   中英

如何通過onclick事件發送變量?

[英]How to send a variable through a onclick event?

我創建了一個數組。 此數組創建具有特定和公共屬性的按鈕。 將它們附加到div(id=form2)我給它們點擊功能gold_2 一切正常,但我無法捕獲最終點擊的按鈕的ID或值。

當我定義btn.onclick=gold_2(value)來導出變量值時,函數執行鏈接我已經點擊了按鈕。 當我定義btn.onclick=gold_2我無法捕獲我點擊的按鈕ID /值

var gold_item = ['CL', 'LR', 'GR', 'TP', 'JH', 'CH', 'HR', 'CK', 'BA', 'BL', 'CP', 'MG', 'XY', 'SC', 'BC', 'PS', 'MS', 'KL', 'DM', 'NP', 'PN', 'DN', 'GC', 'RG', 'CD'];

for (var i = 0; i < gold_item.length; i++) {
  var btn = document.createElement("BUTTON");
  //btn.innerHTML=goldItem[i];
  btn.className = "form2_button";
  btn.id = gold_item[i];
  btn.value = gold_item[i];
  btn.innerHTML = gold_item[i];
  var value = gold_item[i];
  document.getElementById('form2').appendChild(btn);
  btn.onclick = gold_2, 'value';
}

function gold_2() {
  var val = document.getElementById(id).value
  alert(val);
}

使用thisaddEventListener而不傳遞value

問題是你使用逗號運算符b / w gold_2"value" 整個表達式將評估到最后一個表達式,即"value"

我建議你使用eventListeners而不是直接更改函數

btn.addEventListener('click',gold_2);

第二個問題是在gold_2id undefined 您可以使用this來訪問該元素

function gold_2() {
  var val = this.value
  alert(val);
}

當您將value設置為元素的值時,您不需要將其作為參數傳遞。 thisgold_2將是一個點擊的元素,所以你可以訪問它的價值。

使用Wrapper函數傳遞變量

如果您仍想將value變量傳遞給gold_2 ,則可以使用包裝函數。 同時刪除'' value

btn.onclick = () => gold_2(value);

然后,您還需要接受函數gold_2的變量

function gold_2(val) {
  alert(val);
}

暫無
暫無

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

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