![](/img/trans.png)
[英]IE9 error: Object doesn't support property or method 'setAttribute'
[英]Object doesn't support property or method 'append' in IE9
這個腳本在firefox或chrome中工作,但只能在IE9中獲得一半,IE9是我們網站的頂級瀏覽器。
我得到的問題是它拋出這個錯誤。
SCRIPT438:對象不支持屬性或方法'append'calc_ajax.js,第26行字符21
在這一行:item.append(link);
並且我堅持了原因。 任何幫助,將不勝感激。
$(document).ready(function(){
$('.first a.btn').click(function(){
$('.first a.active').removeClass('active');
$(this).addClass('active');
$('.second .title').addClass('active');
var id = $(this).data('cat-id');
var wrap = $('<div>');
$.ajax({
url: script_url,
type: "post",
data: {"cat": id},
dataType: "json"
}).success(function(result){
if(result.status == "ok"){
$.each(result.data, function(i, elem){
item = $("<div class='body-area'>").append($("<img src='" + elem.image + "'>"));
link = $("<a href='#results' class='btn'>");
link.text(elem.name);
link.data('subcat-id', elem.id);
item.append(link);
wrap.append(item);
});
$('.second .body').html(wrap).slideDown('fast');
}
});
});
$('.second a.btn').live('click', function(){
$('.second .body-area.active').removeClass('active');
$(this).parent().addClass('active');
var sub_id = $(this).data('subcat-id');
$.ajax({
url: script_url,
type: "post",
data: {"subcat": sub_id},
dataType: "json"
}).success(function(result){
if(result.status == "ok"){
$('.third .title').text(result.data.title);
$('.third .body').html(result.data.body);
$('.third').slideDown('fast');
}
});
});
});
window.item
是Internet Explorer中的一種特殊方法,由於您粘貼的代碼未聲明本地變量item
因此它嘗試在IE中重新分配本機方法。 IE不允許重新分配,因此您沒有真正獲得item
變量中您期望的jQuery對象,因此append
方法不可用。
修復代碼的最簡單方法是在使用item
變量之前添加var
。 我把一個jsFiddle放在一起,展示它如何修復IE中的問題http://jsfiddle.net/httyY/
$.ajax({
url: script_url,
type: "post",
data: {"cat": id},
dataType: "json"
}).success(function(result){
if(result.status == "ok"){
$.each(result.data, function(i, elem){
var item = $("<div class='body-area'>").append($("<img src='" + elem.image + "'>"));
var link = $("<a href='#results' class='btn'>");
link.text(elem.name);
link.data('subcat-id', elem.id);
item.append(link);
wrap.append(item);
});
$('.second .body').html(wrap).slideDown('fast');
}
});
當使用本機函數document.body.append
時,我在IE11上遇到了同樣的錯誤。
您可以使用document.body.appendChild
或從MDN插入polyfill( https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/append#Polyfill )。
嘗試:
$.each(result.data, function(i, elem){
var item = $("<div class='body-area'>").append($("<img src='" + elem.image + "'>"));
var link = $("<a />", {"href" :"#results", "class": "btn"});
link.text(elem.name);
link.data('subcat-id', elem.id);
item.append(link);
wrap.append(item);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.