javascript
  • jquery
  • 2012-06-26 74 views 0 likes 
    0

    我有以下功能:未捕獲引用錯誤的JavaScript

    if ($(this).find('#sel').length == 0) { 
        var before = $(this).text(); 
        var title_id = $(this).parent().attr('id'); 
        $(this).html("<select id='sel' onchange='selectdone(this, title_id=title_id)> 
            ...</select>"); 
    } 
    

    由此我得到Uncaught ReferenceError: title_id is not defined。爲什麼第4行中的onchange函數沒有選擇我之前定義的變量?我將如何正確地重寫上述內容?

    回答

    2

    您的意思是?

    $(this).html("<select id='sel' onchange='selectdone(this, "+title_id+");'>...</select>"); 
    
    0

    使用字符串連接在這裏:

    $(this).html("<select id='sel' onchange='selectdone(this, title_id=" + title_id +");'>... 
    
    0

    ,它的發生是因爲你定義的「改變」處理程序作爲一個字符串的一部分,所以語言不知道這有代碼在那裏。

    試試這個:

    $(this).html($("<select/>", { 
        id: 'sel', 
        change: function() { selectdone(this, title_id) } 
    })); 
    

    由於您使用jQuery無論如何,你應該通過庫,而不是與管理您的事件處理程序的習慣得到「onfoo」屬性。

    相關問題