我在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選擇器可能不會返回任何內容,因此沒有進一步完成,也不會發生錯誤。問題是,爲什麼沒有找到元素?對我沒有意義。
如果您發佈了該頁面的鏈接或將代碼發佈到jsfiddle.com上,以便我們可以看看發生的一切,這將有所幫助。 $( '#結構')的html( '測試');應該在每個瀏覽器中工作。 – 2011-12-15 16:24:02