从后面的代码更新范围即

时间:2014-11-12 15:44:39

标签: c# internet-explorer internet-explorer-8 ext.net

我正在使用以下后端c#代码来查看是否需要更新span内的文本。

C#:

if (status1.InnerHtml != temp1)
        {
            status1.InnerHtml = temp1;
            status1.Update();
        }

HTML:

<span runat="server" id="status1">Status 1</span>

这在chrome和firefox中运行良好,但在中存在问题。

在视觉上,这就是发生的事情(仅在ie中):

第一次:{​​{0}}

第二次:enter image description here

可能的错误来源

我注意到status1.InnerHtml总是返回Status 1;因为它永远不会改变。这让我相信这就是它创造第二个元素的原因。

这意味着我需要找到一种方法来获取span的当前值,使用除InnerHtml之外的其他内容(runat="server"应该解决此问题)。

查看代码,即在初始加载时,它会正确显示。但是,第二次执行代码时,

它变成了

<ext.net.direct.update id="status1"/>
  <span id="status1">
    Text - Transfer completed
</ext.net.direct.update/>

(注意:结束范围标记已删除)

<span id="el_status1_container">
  <span id="status1">
    Text - Transfer completed
    <span id="status1">
      Text - Transfer completed
</ext.net.direct.update/>

(注意:<ext.net.direct.update id="status1"/>从代码中删除,插入了具有重复ID的元素)

任何指针都将非常感谢!谢谢

1 个答案:

答案 0 :(得分:0)

我提出的解决方案是制作一个按钮,点击后加载状态。使用javascript,我在使用this post中找到的代码生成按钮时单击了该按钮。

function initialload() {
    if (document.getElementById('Label1')) {
        document.getElementById("Label1").click();
    } else {
        setTimeout(initialload, 15);
}

这是有效的,因为事实证明ie忽略了初始跨度(很奇怪,但是嘿,它就是这样)并使用第二个来更新它。

这是一种解决方法,所以如果有人有更好的答案,请分享!