Итак, у меня есть кнопка «Добавить», которая находится рядом с каждым предметом в инвентаре, и я пытаюсь выяснить, как я могу манипулировать этой кнопкой, чтобы она работала как счетчик. Моя проблема в том, что эти кнопки были объявлены в файле javascript, поэтому в файле HTML нет идентификатора кнопки, который я мог бы использовать для своей функции buttonClicked (), которая в основном должна подсчитывать количество раз, когда любая кнопка «добавить» Всего было нажато.
Так, например, моя страница выглядит следующим образом:
Ноутбуки
iMa c $ 2000 [ДОБАВИТЬ КНОПКУ]
Dell $ 600 [ADD BUTTON]
Компьютеры
Windows P C $ 1300 [ADD BUTTON]
Если бы я нажал кнопку рядом с iMa c и кнопка рядом с Windows P C, затем функция buttonClicked () должна вывести «Вы нажали кнопку 2 раза». У меня просто возникают проблемы при попытке доступа к переменным кнопки, которые были определены в файле javascript в строке 'newContent + = <input type=button value="Add" onclick="add(this)"/>
', а не в файле HTML. Эта кнопка, определенная в файле HTML, является кнопкой выбора, отличной от той, к которой я пытаюсь получить доступ. Любая помощь будет оценена.
let count;
function init() {
count = 0;
let button = document.getElementById("but");
button.onclick = buttonClicked;
}
function buttonClicked() {
count++;
let div = document.getElementById("list");
div.innerHTML = "You clicked the button " + count + " times.";
}
function showOptions(el) {
let userPicked = el.value;
var div = document.getElementById("div");
if (userPicked != 'none') {
var newContent = (electronics.store);
newContent += '<div>';
Object.keys(electronics.inventory).forEach(key => {
newContent += key;
newContent += '<div>';
var items = Object.values(electronics.inventory[key]);
items.forEach(item => {
newContent += '<div>';
newContent += ` <span class="brand"> ${item.brand} </span> <span class="price">$${item.cost}</span>`;
newContent += `<input type=button value="Add" onclick="add(this)"/>`
newContent += '</div>';
});
newContent += '</div>';
});
newContent += '</div>';
div.innerHTML = newContent;
}
}
function add(add) {
console.clear();
console.log(add.closest('div').textContent.trim())
}
let electronics = {
store: "Mike's Computers",
inventory: {
"Laptops": {
0: {
brand: "iMac",
cost: 2000
},
1: {
brand: "Dell",
cost: 600
}
},
"Computers": {
2: {
brand: "Windows PC",
cost: 1300
}
}
}
};
<div>
<h1>Welcome</h1>
</div><br />
<div class="dropdown">
<form>
<select name="list" id="list" accesskey="target" onchange="showOptions(this); buttonClicked(this)">
<option value="none">Select a store</option>
<option value="Electronics">Electronics</option>
</select>
<input type=button id="but" value="Select" onclick="showOptions(); buttonClicked()" />
</form>
</div>
<div id="div"></div>