所以我有一个可以从onClick中检索id的Javscript,但它只选择带有id的第一个div。问题是我有多个唯一的id,它们是在php中生成的,然后保存在mysql数据库中。 id是唯一的但我需要我的onClick来检索div块中的id。
function postFunction() {
var i;
var x;
for (i = 0; i< x.length; i++)
x = document.getElementsByClassName("post")[0].getAttribute("id");
//alert(this.id);
alert(x);
}
有没有办法为每个代码块选择id?
答案 0 :(得分:0)
我看到你的问题中有jQuery标记。试试这个:
function postFunction() {
var ids = []; //in case you need to have all ids;
$('.post').each(function() {
var id = $(this).attr('id');
ids.push(id); //Store the id in the array
alert(id);
});
console.log(ids); //Show all ids.
}
答案 1 :(得分:0)
使用Jquery可以让生活更轻松。
var h=[];
$("div").each(function(){
h.push($(this).attr('id'));
});
警报(H); 您将获得所有div ID的数组。
答案 2 :(得分:0)
没有jQuery:
function postFunction() {
var ids = Array.prototype.map.call(document.getElementsByClassName("post"), function(elem) {
return elem.id
});
console.log(ids.join(", "));
}
答案 3 :(得分:0)
你需要获取元素,然后循环它们(目前你的循环代码没有做任何事情)
function postFunction() {
var postEls = document.getElementsByClassName('post'),
postElsCount = postEls.length;
for (var i = 0; i < postElsCount; i++) {
alert(postEls[i].id);
}
}
答案 4 :(得分:0)
jQuery将始终简化此类操作,但您也可以使用vanilla javascript实现相同的操作。这需要努力和由于浏览器支持javascript的时间差异很大,但值得一试。
function postFunction() {
var ids = [];
var x = document.getElementByClassName('post');
for (var i = 0; i < x.length; i++) {
var temp = x[i].getAttribute("id");
ids.push(temp);
}
console.log(ids)
}
答案 5 :(得分:0)
getElementsByClassName()
返回带有提供的类名的所有 HTML元素的列表。在循环中,您只会警告索引[0]
返回的第一个元素。
尝试:
var x = document.getElementsByClassName("post");
for (var i = 0; i < x.length; i = i + 1) {
alert(x[i].getAttribute("id"));
}
<!DOCTYPE html>
<html lang="en">
<div id="blah1" class="post"></div>
<div id="blah2" class="post"></div>
<div id="blah3" class="post"></div>
<div id="blah4" class="post"></div>
<div id="blah5" class="post"></div>
</html>