document.all("ID1").innerHTML 超时?

yuemb369 2009-02-24 09:07:01
要实现的功能,页面中有列表,列表中有一列存储了图片的路径,每当点击某行时触发onRowChange(),然后在一个<div id="fRight"></div>中加载url内容,数据量小或者说网络比较通畅的情况下,图片加载比较顺利,但是现在可能是因为数据量大的缘故,会有以下问题:假设点击第二行(应该是要立即显示图片的),但不显示,在其他行点一下,然后再点第二行,就可以正常显示,难道document.all("fRight").innerHTML 还有超时时间.
function onRowChange()
{
var url = "<table width='100' height='100' valigh='top' alight=center><tr><td><img src='/path/根据点击的行换此图片路径.jpg' border='0' width='100' height='100' style='cursor:hand'></td></tr></table>"
ShowImg(url)
}
function ShowImg(url)
{ var sContent
document.all("fRight").innerHTML = "";
document.all("fRight").innerHTML = url;
}
...全文
119 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzxap 2009-02-24
  • 打赏
  • 举报
回复
function ShowImg(url)
{ var sContent
document.all("fRight").innerHTML = "";
document.all("fRight").innerHTML = url;
}
改为

function ShowImg(url)
{ var sContent
document.getElementById("fRight").innerHTML = "";
document.getElementById("fRight").innerHTML = url;
}
试试
zzxap 2009-02-24
  • 打赏
  • 举报
回复


document.all("fRight").innerHTML = "";

改为document.getElementById("fRight").innerHTML = "";

因为document.all会把所有id放在一个数组里,比较耗费资源

zzxap 2009-02-24
  • 打赏
  • 举报
回复
[code=JAVASCRIPT]
document.all("fRight").innerHTML = "";

改为document.getElementById("fRight").innerHTML = "";

因为document.all会把所有id放在一个数组里,比较耗费资源

[/CODE]
yuemb369 2009-02-24
  • 打赏
  • 举报
回复
嗯,经测试就是
img1 = new Image();
img1.src = sPath
width = img1.width
height = img1.height
这一段的原因,可能是先要从服务器加载图片,然后算图片的长宽,超时了,我跳过这一段,随便给个长度和宽度就没什么问题了.有没有其他的方法获取图片的长宽?(效率高的)
街头小贩 2009-02-24
  • 打赏
  • 举报
回复
可以看看这个连接:http://www.lslnet.com/linux/dosc1/56/linux-377034.htm(用innerHTML载入时图片的加载)

parss 2009-02-24
  • 打赏
  • 举报
回复
LZ这样写应该是可以的。

你可以换一个位置,把ShowImg函数放到前面或onRowChange函数里面试试。
yuemb369 2009-02-24
  • 打赏
  • 举报
回复
在实际程序中我用到了Image()类,来获取图片的长宽,然后根据这个来缩放显示的长宽(大尺寸图片的情况),跟这个有关系?

var url = ""

var m_nWidth = 1000* 0.92;
var m_nHeight = 800 * 0.92;
var width = 0
var height = 0


img1 = new Image();
img1.src = sPath
width = img1.width
height = img1.height

if (img1.width / img1.height > m_RightWidth/nListHeight)
{
if (img1.width > m_nWidth)
{
height = img1.height * m_nWidth / img1.width
width = m_nWidth
}
}
else
{
if (img1.height > m_nHeight)
{
width = img1.width * m_nHeight / img1.height
height = m_nHeight
}
}

url = "<table width='" +m_nWidth +"' height='"+ m_nHeight +"' valigh='top' alight=center><tr><td><img src='" + sPath + "' border='0' width='"+ width +"' height='" + height + "' onClick=ShowOriginalImg('" + sPath + "') alt='点击查看原图' style='cursor:hand'></td></tr></table>"
街头小贩 2009-02-24
  • 打赏
  • 举报
回复
在别的浏览器里都一样效果么?
街头小贩 2009-02-24
  • 打赏
  • 举报
回复
innerHTML是没有超时的!
yuemb369 2009-02-24
  • 打赏
  • 举报
回复
我的用的是一种com控件,本身有自己触发事件的方法,应该没有用到javascript:void(0);
街头小贩 2009-02-24
  • 打赏
  • 举报
回复
onRowChange函数触发的代码贴一下!
是不是这样写的:

<a href="javascript:void(0);" ... >anchor</a>

只要用在触发函数的地方用到了void(0),都会有这种情况!不知你的有没有void(0)

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧