2011-12-15 51 views
0

在IE 8與JQuerys HTML()方法設置innerHTML不工作

$('#structure').html(html); 

能正常工作在Firefox。 IE 8不顯示HTML。我也試着用簡單的文字例如。

$('#structure').html("Test"); 

$('#structure').html("<h3>Test</h3>"); 

所有不與IE 8,但在Firefox n要工作。所以我不認爲這是一個無效的HTML問題。

如果我

document.write(html); 

替換此IE正確地顯示該內容。

我迷路了。我也嘗試getElementById並設置innerHTML屬性或.empty並追加。基本上我嘗試過的所有工作都在FF中,IE 8中沒有任何東西。

代碼在.change()事件中運行,該事件在IE中也正確執行。

任何想法?

編輯:

HTML由第三方商業插件返回。它返回用於顯示ActiveX組件(IE)或插件(FF)的瀏覽器特定代碼。返回的html有效。這不是我使用這個的唯一地方。

也許你不能異步加載ActiveX?這將解釋一切。

$(document).ready(function() { 

    $('#ID').change(function() {    
     var value = $(this).val(); 
     getStructure(value); 
    }); 
}); 


function getStructure(id){   
    $.get(
     'getStructure.php?id=' + id, 
     function(data){  
      // 3rd party function call: 
      var html = getObjectTag(182, 172, data.Structure); // data["Structure"] does not work too in IE, it does in FF 
      // alert(html); // is displayed also in IE when uncommented 
      $('#structure').html(html); 
      // alert(html); // is displayed also in IE when uncommented    
    }, 
    "json" 
    );   
} 
<div class="cssform"> 
    <div><label>ID</label><input id="ID" type="text"/></div> 
</div 
<div id="structure"></div> 

注意,在另一個應用中使用:

var html = getObjectTag(182, 172, aData[0]); 
$('td:eq(0)', nRow).html(html); 

其中ADATA,調用函數的陣列參數。這是用來顯示jquery插件數據表中的對象,這裏ti適用於IE 8和FF,沒有任何問題。

EDIT2:

而且「分析」讓我相信,隨着ID在div =結構未在IE中正確不管是什麼原因。

document.getElementById("structure").innerHTML = html; 

導致錯誤「document.getElementById(...)」爲空或不是對象。使用jquery選擇器可能不會返回任何內容,因此沒有進一步完成,也不會發生錯誤。問題是,爲什麼沒有找到元素?對我沒有意義。

+1

如果您發佈了該頁面的鏈接或將代碼發佈到jsfiddle.com上,以便我們可以看看發生的一切,這將有所幫助。 $( '#結構')的html( '測試');應該在每個瀏覽器中工作。 – 2011-12-15 16:24:02

回答

0

好的。找到答案:

<div class="cssform"> 
    <div><label>ID</label><input id="ID" type="text"/></div> 
</div <!-- Missing closing > which somehow was accepted by FF --> 
<div id="structure"></div>