Javascript 对象没有';t支持属性或方法';追加';在IE9中
这个脚本在firefox或chrome上运行,但在IE9上只运行了一半,IE9是我们网站的顶级浏览器 我遇到的问题是它抛出了这个错误 SCRIPT438:对象不支持属性或方法“append” calc_ajax.js,第26行,字符21 此行:item.append(link) 我被卡住了。任何帮助都将不胜感激Javascript 对象没有';t支持属性或方法';追加';在IE9中,javascript,jquery,internet-explorer-9,Javascript,Jquery,Internet Explorer 9,这个脚本在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').re
$(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');
}
});
});
$(文档).ready(函数(){
$('.first a.btn')。单击(函数(){
$('.first a.active').removeClass('active');
$(this.addClass('active');
$('.second.title').addClass('active');
var id=$(this).data('cat-id');
var wrap=$('');
$.ajax({
url:script_url,
类型:“post”,
数据:{“cat”:id},
数据类型:“json”
}).成功(功能(结果){
如果(result.status==“ok”){
$.each(result.data,function(i,elem){
项目=$(“”)。追加($(“”);
链接=$(“”);
链接文本(元素名称);
链接数据(“子类别id”,元素id);
项目.附加(链接);
包装。附加(项目);
});
$('.second.body').html(wrap.slideDown('fast');
}
});
});
$('.second a.btn').live('单击',函数()){
$('.second.body-area.active').removeClass('active');
$(this.parent().addClass('active');
var sub_id=$(this).data('subcat-id');
$.ajax({
url:script_url,
类型:“post”,
数据:{“subcat”:sub_id},
数据类型:“json”
}).成功(功能(结果){
如果(result.status==“ok”){
$('.third.title').text(result.data.title);
$('.third.body').html(result.data.body);
$('.third')。向下滑动('fast');
}
});
});
})) 试试看:
$.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);
});
$。每个(结果、数据、函数(i、元素){
变量项=$(“”)。追加($(“”);
var link=$(“”,{“href”:“结果”,“类”:“btn”});
链接文本(元素名称);
链接数据(“子类别id”,元素id);
项目.附加(链接);
包装。附加(项目);
});
窗口。item
是Internet Explorer中的一种特殊方法,由于粘贴的代码没有声明局部变量item
,因此它试图在IE中重新分配本机方法。IE不允许重新分配,因此您没有真正获得item
变量中预期的jQuery对象因此,append
方法不可用
修复代码的最简单方法是在使用项
变量之前添加var
。我创建了一个JSFIDLE,展示了它是如何解决IE中的问题的
$.ajax({
url:script_url,
类型:“post”,
数据:{“cat”:id},
数据类型:“json”
}).成功(功能(结果){
如果(result.status==“ok”){
$.each(result.data,function(i,elem){
变量项=$(“”)。追加($(“”);
变量链接=$(“”);
链接文本(元素名称);
链接数据(“子类别id”,元素id);
项目.附加(链接);
包装。附加(项目);
});
$('.second.body').html(wrap.slideDown('fast');
}
});
使用本机函数document.body.append时,我在IE11上遇到了相同的错误
您可以使用document.body.appendChild
或插入()。您没有声明项
或链接
,因此它们是全局的,可能会导致问题,即非常特殊,但不确定这是否是问题所在……更多关于如何做的信息,因为这段代码不是我写的,而且我对js的了解很少。不幸的是,很抱歉听起来像个傻瓜。@JoeLee写这篇文章的人应该问这些问题,但我是必须解决它的人,但多亏了sudhir的代码,现在一切都正常了
$.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');
}
});