我想显示第一个输入框的值,当我点击第一个删除链接并显示第二个输入框的值时,当我点击第二个删除链接时使用相同的ID,但它始终发送首先删除链接的值。
function delChat() {
var id = document.getElementById('delmsg').value;
alert(id);
}
<a href="#" onclick="delChat()">Delete?</a>
<input type="hidden" value="1352" id="delmsg" >
<br />
<a href="#" onclick="delChat()">Delete?</a>
<input type="hidden" value="1350" id="delmsg" >
答案 0 :(得分:0)
您不能对两个不同的元素使用相同的ID。页面上的每个元素都应具有唯一ID。
但是如果你不能改变id,那么你应该这样得到属性:
function delChat(el) {
console.log(el.getAttribute('value') + " clicked");
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('GET', 'delete.php?id='+el.getAttribute('value'), true);
xmlhttp.send();
}
<a href="#" id="delmsglink" onclick="delChat(this)" value="1352">Delete?</a>
<br />
<a href="#" id="delmsglink" onclick="delChat(this)" value="1350">Delete?</a>
答案 1 :(得分:0)
可能会停止使用id,只需在html中使用保留字this和js传递被单击作为函数参数的元素,以获取值属性即可使用getAttribute ('value')
function delChat(el) {
let id = el.getAttribute('value');
console.log(id);
}
&#13;
<a href="#" onclick="delChat(this)" value="1352">Delete?</a>
<br />
<a href="#" onclick="delChat(this)" value="1350">Delete?</a>
&#13;
要有一个更易于管理的代码,理想的是从JS添加函数而不在HTML中使用,但是有必要添加一个类来引用它们(linkdel) < / p>
function delChat() {
let id = this.getAttribute('value');
console.log(id);
}
var links = document.querySelectorAll('.linkdel');
links.forEach(function(el){
el.addEventListener('click',delChat,false);
})
&#13;
<a href="#" class="linkdel" value="1352">Delete?</a>
<br />
<a href="#" class="linkdel" value="1350">Delete?</a>
&#13;
答案 2 :(得分:0)
id
必须是唯一的。最好的选择是使用类并将事件侦听器附加到每个元素。您可以在事件侦听器调用的函数中使用this
来指向单击的元素。此外,value
不是a
的有效属性,因此请使用数据属性:data-value
- 可以通过元素的dataset
对象访问数据属性的值。 / p>
function delChat() {
var id = this.dataset.value;
console.log(id);
}
const buttons = document.querySelectorAll('.del');
buttons.forEach(button => button.addEventListener('click', delChat, false));
<a href="#" class="del" data-value="1352">Delete?</a>
<br />
<a href="#" class="del" data-value="1350">Delete?</a>