Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX-加载所有div元素_Javascript_Html_Ajax - Fatal编程技术网

Javascript AJAX-加载所有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元素的网页,例如:

<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);
       });
    });
});