IE7 Ajax加载图像问题 - CSS属性显示不工作

问题描述:

我试图有条件地显示图像 - 但它不工作只在IE浏览器。在Firefox中,它工作正常。任何其他选项来实现相同?谢谢。IE7 Ajax加载图像问题 - CSS属性显示不工作

<span id="goog" style="display:none;" > 
    <img height="14" width="14" src="static/images/ajax_load.gif" /> 
</span> 

if(document.getElementById("goog")){ 
    alert('goog'); 
    document.getElementById("goog").style.display="none"; 
} 

if(document.getElementById("goog")){ 
    alert('goog'); 
    document.getElementById("goog").style.display="inline"; 
} 

更新:03/07

我一直在试图解决这个IE浏览器,但我不能这样做呢。

问题:我使用的是从dtree定制的JavaScript树组件,并填充树中点击的每个节点的数据或子节点,我正在使用Ajax。每次,如果正在处理某些内容,我希望显示ajax图像(gif)以及“处理”文本。我试过的所有东西都可以在Firefox中使用,但在IE中无法使每个节点是在HTML文档中div标签和是如下:

<div class="dTreeNode"> 
<a href="javascript: d.o(1);"> 
    <img id="jd1" alt="" src="static/images/minusbottom.gif"/> 
</a> 
0 
<input id="ch1" type="checkbox" onclick="javascript: changeCheckBoxValues(1);"/> 
<a id="linkNode1" class="node" onclick="javascript: d.o(1); return false" href="#">AIG</a> 
<span id="aj1" style="display: none;"> 
    <img height="14" width="14" src="static/images/ajax_load.gif"/> 
</span> 

当Ajax请求被触发,静态和先前未显示的(显示:无)被显示出来,如下面

<table align="center" width="80%" border="1" cellspacing="0" cellpadding="0" id="proc" 
     style="display:none;border-collapse: collapse; border: 1px solid; border-color: #D8D8D8;"> 
     <tr> 
      <td width="33%"></td> 
      <td class="buttonBar" width="33%"> 
       <span class="TextBlackNormal">&nbsp;&nbsp;&nbsp;&nbsp;processing </span> 
      </td> 
      <td width="33%"></td> 
     </tr> 
</table> 

这两个定位标记都会触发Ajax请求,但显示(GIF图像和处理文本)不能在IE中使用。

我曾试过如下:

1)互换在DIV的锚标签的href &的onclick值DOM的 2)可见性值试图代替显示 3)创建动态DOM元素并加入其中示出的AJAX加载图像+处理文本

我已经想出它不是Ajax调用引起该问题,在图像+文本 4)在容器的innerHTML的(DIV /表)至少我是这么认为的。

当我在IE中用条件显示图像+文本(使用display/visibility在IE中)时,使用某个DOM值(文本框的值)进行实验时,它的工作方式就像魅力一样。

我真的不知道是什么原因造成的问题。

感谢任何帮助。

document.getElementById在IE中实际上可能会返回元素与name="goog"。此外,如果您在页面上具有多个此类ID的元素,则这是不正确的,不同的浏览器在这种情况下可能会有不同的表现。在IE中执行这样的检查:

alert(document.getElementById("goog").id); 
alert(document.getElementById("goog").tagName); 

你可以试试“内联”变“” 或访问http://jsfiddle.net/xTUZd/2/

我觉得这个问题有点难以理解。但这里最大的问题就是你使用的IE版本。 IE的老版本在隐藏/显示元素时会出现一些渲染问题。用position: relativezoom: 1纠正那个小提琴。

但脚本应该可以工作,但是您的AJAX调用中可能会出错,从而导致您无法调用成功函数。尝试添加一个错误事件,看看是否被触发。我不太清楚你从服务器接收到什么,但是IE有时会在被阻塞的元素上失败。

但是在jsfiddle中的展示会很好。

+0

我正在使用IE7。 – gekrish 2011-03-14 05:09:59

+0

ok,然后''position:relative'在元素上加上'display:none'可能会起作用。 – Tokimon 2011-03-16 14:03:16

从下面引用的文字,

问题:我正在使用从DTREE定制的JavaScript树组件并填充树点击的每一个节点,我使用了Ajax的数据或子女。每次,如果正在处理某些内容,我希望显示ajax图像(gif)以及“处理”文本。我试过的所有东西都可以在Firefox中使用,但在IE中无法使每个节点都是HTML文档中的div标签,如下所示:

我认为您希望显示处理文本,直到原始数据被ajax调用获取为止。

如果是的话那么在哪里只需使用图像通过检查AJAX状态显示,

有每一行的一个div(可能是旁边的锚文本水平),其中u要显示的处理文本。

Ajax的回调函数,

xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
    } 
    else 
    { 
    document.getElementById("goog").innerHTML ='<img src=static/images/ajax_load.gif>'; 
    } 
} 

我认为这是足以让ú?如果我误解了你的问题,我很抱歉。

+0

谢谢 - 从来没有这样想过,我会尝试。虽然我不是很有希望。 – gekrish 2011-03-15 18:48:27