好的,现在我已经有了这个我需要用Javascript做的事情,但我不知道最好的方法!我将通过告诉你如何“思考”它应该有效来解释......
在网页内部会有多个span标记,如下所示:<span onload="myfunction(1);"></span>
myfunction()(外部托管)将等到页面完成加载并收集每个onload事件的所有信息。
然后myfunction()会将此信息发送到外部php页面进行处理。
php页面会返回一些html。 (可能在数组中,因为我想在1次调用中执行此操作)
myfunction()将用html替换span标签。
步骤3,4和5我知道怎么做,但步骤1和2我不知道如何实现?我列出了我在这里的所有步骤,以防有人看到我可能遇到的另一个大问题。
答案 0 :(得分:1)
由于onload事件仅受&lt; body&gt;,&lt; frame&gt;,&lt; frameset&gt;,&lt; iframe&gt;,&lt; IMG&gt;中 什么都不会发生。 我建议你为每个跨度放置id,并且也放这样的东西:
<body onload="collector.run()">
<span id="s1"></span>
<script> collector.delayFunction("s1",/data/) </script>
<span id="s2"></span>
<script> collector.delayFunction("s2",/data/) </script>
<span id="s3"></span>
<script> collector.delayFunction("s3",/data/) </script>
<span id="s4"></span>
<script> collector.delayFunction("s4",/data/) </script>
</body>
//function in js file somewhere above
var collector=(function (){
this.stack={};
this.delayFunction= function(id,data){
this.collector.stack[id]=data;
}
this.run=function(){// this function will process all collected data
}
})();
答案 1 :(得分:0)
span标记没有“onload”
答案 2 :(得分:0)
您可以尝试使用类似于下一个
的代码function collector(){
var spans = document.getElementsByTagName("SPAN");
var commands = [];
for (var i=0; i<spans.length; i++)
if (spans[i].getAttribute("onload"))
commands.push(spans[i].getAttribute("onload"));
//here you have all onload commands in the array and can go to stage 3
}
if (window.addEventListener)
window.addEventListener("load",collector,false):
else
window.attachEVent("onload",collector);