Как отправить переменную через событие onclick? - PullRequest
0 голосов
/ 22 апреля 2019

Я создал массив.этот массив создает кнопки с определенными и общими атрибутами.после добавления их к div(id=form2) я даю им функцию щелчка gold_2.Все работает нормально, но я не могу зафиксировать идентификатор или значение кнопки, на которую в итоге нажимают.

Когда я определяю btn.onclick=gold_2(value) для экспорта значения переменной, функция выполняет ссылку, я уже нажал кнопку.когда я определяю btn.onclick=gold_2, я не могу захватить кнопку id / value , которую я нажимаю.

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);
}

1 Ответ

0 голосов
/ 22 апреля 2019

Использование this и addEventListener без передачи value

Проблема в том, что вы используете запятые операторы b / w gold_2 и "value".Целое выражение будет соответствовать последнему выражению, т.е. "value".

Я бы предложил вам использовать eventListeners вместо непосредственного изменения функции

btn.addEventListener('click',gold_2);

Вторая проблема заключается в том, что id is undefined внутри gold_2.Вы можете использовать this для доступа к элементу

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

Поскольку вы устанавливаете value в качестве значения элемента, поэтому вам не нужно передавать его в качестве аргумента.this in gold_2 будет элементом, по которому щелкают, чтобы вы могли получить доступ к его значению.

Использование функции Wrapper для передачи переменной

Если вы все еще хотите передать переменную value в gold_2, вы можете использовать функцию-оболочку.Также удалите '' вокруг value

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

Затем вам также потребуется принять переменную внутри функции gold_2

function gold_2(val) {
  alert(val);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...