奇怪的是,我找不到这个问题的答案,但是,我收到了这个错误:
TypeError: 'undefined' is not a function (evaluating 'i.replace(et,"<$1></$2>")')
它似乎来自这行代码(我不得不煞费苦心地评论每行代码才能找到它):
$.post("include/ajax.php", {updateWorkArt:"1", title:title, height:height, width:width, medium:medium, type:type, id:id, left:fin, top:top}, function(data){},"json");
以下是完整代码:
$(document).on("click", "#updateWorkPopup", function(){
var title = $("#updateWorkTitle").val();
var height = $("#updateWorkHeight").val();
var width = $("#updateWorkWidth").val();
var medium = $("#updateWorkMedium").val();
var type = $("#updateWorkAssetType").val();
var id = $("#whiteBgPopup").attr("data-workid");
if($.trim(title) != "" && $.trim(height) != "" && $.trim(width) != "" && $.trim(medium) != "" && $.trim(type) != "")
{
var left = parseInt($("#offsetContainer").position().left);
var containerMid = parseInt($(window).width()/2);
var fin = (-containerMid+left)*-1;
var top = parseInt($("#wall").height()/2);
$.post("include/ajax.php", {updateWorkArt:"1", title:title, height:height, width:width, medium:medium, type:type, id:id, left:fin, top:top}, function(data){
if(data.success)
{
$("#popUp").fadeOut("slow", function(){
$("#popUp").find("input").each(function(){
$(this).val("").blur();
});
$("#wall").append("<div class='adjustArtwork' data-workid='" + id + "' style='left:" + fin + "px; top:" + top + "px;' ><img src='" + data.image + "' width='" + data.width + "' /></div>", function(){
alert("finished");
});
});
}
alert("yes!");
},"json");
}
});
这个错误究竟意味着什么?
答案 0 :(得分:0)
这意味着(很可能)您的变量i
引用了一个没有名为replace
的属性的对象。
当你要求
时i.replace
JavaScript查找了i
的值并发现它是一个对象;然后查找了它的replace
属性并找不到它,因此返回undefined
。
然后它尝试将i.replace
作为函数调用,但“undefined不是函数”。
i.replace
的值实际上也可能是值undefined
(虽然这很少见,只是为了完整性而添加)。
在任何一种情况下,代码
i.replace(et,"<$1></$2>")
仅在i.replace
的值为函数时才有效。
答案 1 :(得分:0)
我发现了问题。
.append()
似乎没有回调函数并导致错误,因为它是undefined
。
幸运的是,.append()
是同步的,所以我的代码将按照它的编写顺序加载;不需要function()
。