内联JavaScript的未捕获参考错误

时间:2012-06-26 22:49:02

标签: javascript jquery

我有以下功能:

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函数没有找到我之前定义的变量?我该如何正确地重写上述内容?

3 个答案:

答案 0 :(得分:2)

你的意思是?

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

答案 1 :(得分:0)

在此处使用字符串连接:

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

答案 2 :(得分:0)

这种情况正在发生,因为您将“更改”处理程序定义为字符串的一部分,因此语言不知道那里有代码。

试试这个:

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

既然你正在使用jQuery,你应该养成通过库而不是“onfoo”属性管理事件处理程序的习惯。