Javascript AJAX-加载所有div元素
我有一个包含许多div元素的网页,例如:Javascript AJAX-加载所有div元素,javascript,html,ajax,Javascript,Html,Ajax,我有一个包含许多div元素的网页,例如: <div id='ahFyb2JpdGFpbGxlc2FuZGJveHIKCxIA'> </div> 我希望每个div元素在加载后调用一个javascript函数来填充div <div id='ahFyb2JpdGFpbGxlc2FuZGJveHIKCxIA' onload=getcontent('ahFyb2JpdGFpbGxlc2FuZGJveHIKCxIA');> </div>
<div id='ahFyb2JpdGFpbGxlc2FuZGJveHIKCxIA'>
</div>
我希望每个div元素在加载后调用一个javascript函数来填充div
<div id='ahFyb2JpdGFpbGxlc2FuZGJveHIKCxIA'
onload=getcontent('ahFyb2JpdGFpbGxlc2FuZGJveHIKCxIA');>
</div>
当然,div元素不允许onload。有办法做到这一点吗?我在很多地方读到jQuery可以帮助实现这一点,但我不知道如何编写代码。任何帮助都将不胜感激 要在没有jquery的情况下完成,只需设置窗口的onload,并告诉它如何处理每个div。但是jquery使这更简单 因此,如果没有:
window.document.onload = function() {
var divs = document.getElementsByTagName("div");
for(var i = 0; i < divs.length; i++)
divs[i].text("blah blah blah");
}
};
当然,这假设每个div都获得相同的文本。如果您希望它基于ID或类,那么您肯定需要jquery
PS-大多数网页都试图避免在实际的HTML中放置javascript事件处理程序。如果您在加载时设置了事件处理程序,那么就没有必要了,代码也更干净了。Jquery在这方面绝对有帮助。如果您是基于div的ID来创建内容,那么对Anthony的代码稍加修改就可以了
document.onload = function() {
var divs = document.getElementsByTagName("div");
for(var i = 0; i<divs.length;i++){
divs[i].innerHTML = getContent(divs[i].id);
}
document.onload=function(){
var divs=document.getElementsByTagName(“div”);
对于(var i=0;i我会给div分配一个类,您希望“自动加载”它们自己的内容。这使得标记更清晰,JavaScript更简洁
$(function() {
$('.autoload').each(function() {
// Use AJAX
$.get("service.php", {id: this.id} function(response) {
// Handle server response here
});
// Or a local data island
this.innerHTML = getDataById(this.id);
});
});
使用jQuery:
你应该考虑使用$.Load()来检索HTML内容。使用它比使用$.GET()(Attho)稍微容易一些,如果你提供参数,它将使用后语义学…
在任何情况下,你真的想为每个div单独调用服务器吗?也许你应该考虑一个调用DIV ID的等待内容的累积集合到你的Web服务函数的调用,然后返回一个JSON结构,你可以在成功的填充DIVS中一次遍历……/P>
类似(未测试!)的内容:
如果他们在加载时需要内容,为什么不直接从服务器上获取呢?
$(function() {
$('.autoload').each(function() {
// Use AJAX
$.get("service.php", {id: this.id} function(response) {
// Handle server response here
});
// Or a local data island
this.innerHTML = getDataById(this.id);
});
});
$(function() {
var ids = [];
$('div.autoload').each() { function() { ids.push($(this).attr('id')); });
$.get('service.php', {ids: ids}, function (response) {
$.each(response.perdiv, function (i, c) {
$('div#' + c.id).html(c.html);
});
});
});