用JS调用XML里的数据,然后用JS分页.第一页显示正常,但在第二页以后有些图片就要等它加载完之后你右键点"显示"才会出来.
在IE7.0和FIREFOX中测试没问题,在IE6.0中就有这个现象,我分析认为可能是IE6.0是先显示后加载的原因,所以等图片加载完了之后,你要按显示才会出来,不然就是空的.这有什么办法能解决呢??? 第一页我是用 <body onload="NewInfoAction(0,10);">,加载完之后显示的,这样就正常显示.
<?xml version="1.0" encoding="utf-8" ?>
<NewInfo>
<News>
<Img>http://www.abc.com/a.jpg </Img>
<Content>abc </Content>
<Url>http://www.abc.com </Url>
</News>
<News>
<Img>http://www.abc.com/a.jpg </Img>
<Content>abc </Content>
<Url>http://www.abc.com </Url>
</News>
<NewInfo>以下是JS的 NewInfoAction()函数,通过这个函数把XML显示在这两个层上
<div id="textDiv" > </div>这个层显示数据 <div id="Pages"> </div>这个层显示分页.
有一个问题,第一次加载的时候刷新页面节点会变动,在IE6.0中测试点击分页后xml数据会丢失??
function NewInfoAction(startpos,endpos) //startpos起始节点,endpos终止节点
{
var dom;
var type=1; //默认为IE浏览器
var data = new Array(); //存储实体的数组
if(navigator.userAgent.indexOf("MSIE")>0)
{
dom = new ActiveXObject("Microsoft.XMLDOM"); //实例化dom对象
/*
关闭异步处理功能
本函数不需要在XML文件读取完成之前进行任何操作
*/
dom.async = false;
dom.load("NewInfo.xml"); //加载xml文件
}
else if(isFirefox=navigator.userAgent.indexOf("Firefox") > 0)
{
type=2;
dom = document.implementation.createDocument("", "", null); //火狐不支持ActiveXObject
dom.async = false;
dom.load("NewInfo.xml");
/*
这是火狐的另外一中加载xml的方式
var oXmlHttp = new XMLHttpRequest() ;
oXmlHttp.open( "GET", "test.xml", false ) ;
oXmlHttp.send(null) ;
//oXmlHttp.responseXML就是xml对象。
*/
}
else
{
window.alert('请用IE或Firefox浏览器进行浏览!');
return;
}
if(dom)
{
var node;
if(type == 1) //判断是否为IE浏览器
{
node = dom.documentElement.childNodes;
for(var i=0;i <node.length;i++)
{
var img = node[i].childNodes[0].text; //取出i行中的字段的值
var content = node[i].childNodes[1].text;
var url = node[i].childNodes[2].text;
data.push({img:img,content:content,url:url}); //使用json,把数据库存储在里面
}
}
else
{
var node = dom.getElementsByTagName("News");
for(var i=0;i <node.length;i++)
{
// window.alert(dom.getElementsByTagName("News")[i].childNodes[1].textContent);
// window.alert(dom.getElementsByTagName("News")[i].childNodes[3].textContent);
// window.alert(dom.getElementsByTagName("News")[i].childNodes[5].textContent); var value = dom.getElementsByTagName("News")[i].textContent.split(' ');
var img = value[4];
var content = value[8];
var url = value[12];
data.push({img:img,content:content,url:url}); //在这里,我们使用json,把数据库存储在里面
}
}
}
else
{
window.alert("dom对象为空,失败了!");
return;
}
if(data.length != 0)
{
document.getElementById('textDiv').innerHTML = ''; var d=document;
if(!d.MM_p) d.MM_p=new Array(); var nums=0; for(var i=startpos;i <endpos;i++)
{
d.MM_p[nums] = new Image();
d.MM_p[nums].onload = function() { document.getElementById('textDiv').innerHTML += ' <a href="'+this.url+'"> <img src="'+this.src+'"> <br>'+this.alt+' </a>'; }
d.MM_p[nums].src = data[i].img;
d.MM_p[nums].alt = data[i].content;
d.MM_p[nums].url = data[i].url;
nums++;
}
}
else
{
document.getElementById('textDiv').innerHTML = '暂无数据!';
}
document.getElementById('Pages').innerHTML=''; if(data.length>10)
{
var k=0;
if(data.length%10==0)
{
for(var j=1;j <=data.length/10;j++)
{
document.getElementById('Pages').innerHTML += ' <a href="javascript:void(0);" onclick="javascript:NewInfoAction('+k+','+(k+10)+');" onfocus="this.blur()">'+j+' </a>';
k=k+10;
}
}
else
{ for(var j=0;j <=data.length/10;j++)
{ if((k+10)>data.length)
{
document.getElementById('Pages').innerHTML += ' <a href="javascript:void(0);" onclick="javascript:NewInfoAction('+k+','+data.length+');" onfocus="this.blur()">'+(j+1)+' </a> ';
}
else
{
document.getElementById('Pages').innerHTML += ' <a href="javascript:void(0);" onclick="javascript:NewInfoAction('+k+','+(k+10)+');" onfocus="this.blur()">'+(j+1)+' </a> ';
}
k=k+10;
}
}
} }
在IE7.0和FIREFOX中测试没问题,在IE6.0中就有这个现象,我分析认为可能是IE6.0是先显示后加载的原因,所以等图片加载完了之后,你要按显示才会出来,不然就是空的.这有什么办法能解决呢??? 第一页我是用 <body onload="NewInfoAction(0,10);">,加载完之后显示的,这样就正常显示.
<?xml version="1.0" encoding="utf-8" ?>
<NewInfo>
<News>
<Img>http://www.abc.com/a.jpg </Img>
<Content>abc </Content>
<Url>http://www.abc.com </Url>
</News>
<News>
<Img>http://www.abc.com/a.jpg </Img>
<Content>abc </Content>
<Url>http://www.abc.com </Url>
</News>
<NewInfo>以下是JS的 NewInfoAction()函数,通过这个函数把XML显示在这两个层上
<div id="textDiv" > </div>这个层显示数据 <div id="Pages"> </div>这个层显示分页.
有一个问题,第一次加载的时候刷新页面节点会变动,在IE6.0中测试点击分页后xml数据会丢失??
function NewInfoAction(startpos,endpos) //startpos起始节点,endpos终止节点
{
var dom;
var type=1; //默认为IE浏览器
var data = new Array(); //存储实体的数组
if(navigator.userAgent.indexOf("MSIE")>0)
{
dom = new ActiveXObject("Microsoft.XMLDOM"); //实例化dom对象
/*
关闭异步处理功能
本函数不需要在XML文件读取完成之前进行任何操作
*/
dom.async = false;
dom.load("NewInfo.xml"); //加载xml文件
}
else if(isFirefox=navigator.userAgent.indexOf("Firefox") > 0)
{
type=2;
dom = document.implementation.createDocument("", "", null); //火狐不支持ActiveXObject
dom.async = false;
dom.load("NewInfo.xml");
/*
这是火狐的另外一中加载xml的方式
var oXmlHttp = new XMLHttpRequest() ;
oXmlHttp.open( "GET", "test.xml", false ) ;
oXmlHttp.send(null) ;
//oXmlHttp.responseXML就是xml对象。
*/
}
else
{
window.alert('请用IE或Firefox浏览器进行浏览!');
return;
}
if(dom)
{
var node;
if(type == 1) //判断是否为IE浏览器
{
node = dom.documentElement.childNodes;
for(var i=0;i <node.length;i++)
{
var img = node[i].childNodes[0].text; //取出i行中的字段的值
var content = node[i].childNodes[1].text;
var url = node[i].childNodes[2].text;
data.push({img:img,content:content,url:url}); //使用json,把数据库存储在里面
}
}
else
{
var node = dom.getElementsByTagName("News");
for(var i=0;i <node.length;i++)
{
// window.alert(dom.getElementsByTagName("News")[i].childNodes[1].textContent);
// window.alert(dom.getElementsByTagName("News")[i].childNodes[3].textContent);
// window.alert(dom.getElementsByTagName("News")[i].childNodes[5].textContent); var value = dom.getElementsByTagName("News")[i].textContent.split(' ');
var img = value[4];
var content = value[8];
var url = value[12];
data.push({img:img,content:content,url:url}); //在这里,我们使用json,把数据库存储在里面
}
}
}
else
{
window.alert("dom对象为空,失败了!");
return;
}
if(data.length != 0)
{
document.getElementById('textDiv').innerHTML = ''; var d=document;
if(!d.MM_p) d.MM_p=new Array(); var nums=0; for(var i=startpos;i <endpos;i++)
{
d.MM_p[nums] = new Image();
d.MM_p[nums].onload = function() { document.getElementById('textDiv').innerHTML += ' <a href="'+this.url+'"> <img src="'+this.src+'"> <br>'+this.alt+' </a>'; }
d.MM_p[nums].src = data[i].img;
d.MM_p[nums].alt = data[i].content;
d.MM_p[nums].url = data[i].url;
nums++;
}
}
else
{
document.getElementById('textDiv').innerHTML = '暂无数据!';
}
document.getElementById('Pages').innerHTML=''; if(data.length>10)
{
var k=0;
if(data.length%10==0)
{
for(var j=1;j <=data.length/10;j++)
{
document.getElementById('Pages').innerHTML += ' <a href="javascript:void(0);" onclick="javascript:NewInfoAction('+k+','+(k+10)+');" onfocus="this.blur()">'+j+' </a>';
k=k+10;
}
}
else
{ for(var j=0;j <=data.length/10;j++)
{ if((k+10)>data.length)
{
document.getElementById('Pages').innerHTML += ' <a href="javascript:void(0);" onclick="javascript:NewInfoAction('+k+','+data.length+');" onfocus="this.blur()">'+(j+1)+' </a> ';
}
else
{
document.getElementById('Pages').innerHTML += ' <a href="javascript:void(0);" onclick="javascript:NewInfoAction('+k+','+(k+10)+');" onfocus="this.blur()">'+(j+1)+' </a> ';
}
k=k+10;
}
}
} }
这个 window.onload() 具体怎么写呢.能否告知一二
a.jpg