2013-06-19 113 views
0

奇怪的是我找不到這個問題的答案,但是,我得到這個錯誤:

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

這意味着你試圖像調用函數一樣調用'undefined'(例如'undefined()')。如果你沒有在預期函數中傳遞參數,可能會發生這種情況。你能發佈你的完整代碼嗎? – nondefault

+1

「我不得不刻意評論每一行代碼以找到它」---打開chrome開發工具並打開「暫停未捕獲的異常」 – zerkms

+0

添加完整代碼。 – Majo0od

回答

0

我發現了這個問題。

看起來.append()沒有回調函數,並且因爲是undefined而導致錯誤。

謝天謝地,.append()是同步的,所以我的代碼會按寫入的順序加載;沒有function()是必要的。

0

這意味着(很有可能)您的變量i引用了一個沒有名爲replace的屬性的對象。

當你問

i.replace 

的JavaScript擡頭的i的價值,並發現它是一個對象;然後查找其replace財產,並沒有找到它,所以它返回undefined

然後它試圖調用i.replace作爲函數,但「未定義不是函數」。

i.replace的值實際上也可能是undefined的值(儘管這很少見,只是爲了完整性)。

在任一情況下,代碼

i.replace(et,"<$1></$2>") 

只能如果i.replace值的函數。

+0

我更新了我的問題,添加了此問題所涉及的代碼塊。 – Majo0od

相關問題