Я хочу отправить значение из html в javascript, используя переменную javascript.
Я создал div из javascript следующим образом:
<body>
<div id = "row" class = "category-cards">
// creates from js
</div>
</body>
<script>
var d1 = document.getElementById("row");
for (let i=5; i>0; i--) {
d1.insertAdjacentHTML('beforeend',
<div class = "card card-small card-category">
<div class = "card-del-btn">
<button id = "btnDel" onclick = "deleteCategory(i)"> <b> × </b> </button>
</div>
<!-- displays the record --!>
</div>
}
function deleteCategory(index){
// takes the index and searches the mysql database for match, and deletes the record
}
</script>
Каждая итерация цикла for вставляет карту записи из базы данных, и я хочу удалить эту запись из документа, а также из базы данных при нажатии кнопки.
Есть ли способ связать уникальный идентификатор или значение с каждой карточкой и отправить его по клику?
Я пытался отправить значение i, но это всегда последний индекс, который в данном случае был равен 0.
Существует много способов добиться того, что вы ищете, но самым простым из них было бы использование пользовательских атрибутов html и предоставление элемента, который инициировал событие, в качестве аргумента для вашего обратного вызова.
Это может быть достигнуто так
function handleClick(element) {
const elementData = element.getAttribute('data-my-data')
// do some stuff here with element data
}
Используя ваш код:
d1.insertAdjacentHTML('beforeend', `
<div class = "card card-small card-category">
<div class = "card-del-btn">
<button data-my-data = "here goes your data" onclick = "handleClick(element)"> <b> × </b> </button>
</div>
</div>
`)
В этом случае this
будет объектом Window. Не сработает. element
- это просто название для аргумента, можно назвать как угодно :)
Это потрясающе, большое спасибо. Тем не менее, мне пришлось передать «это» в качестве аргумента вместо «элемент» в вызове handleClick, поэтому, пожалуйста, отредактируйте это в элементе <button>.