【问题标题】:Getting error - ReferenceError: value is not defined出现错误 - ReferenceError:未定义值
【发布时间】:2015-08-24 06:19:51
【问题描述】:

我有以下代码:

$.each(data, function(k, v) {
  var contact = new Array();
  contact.push('<input type="text" class="id" data-val="'+v.id +'"value="' +v.id + '" />');
  contact.push('<select class="" data-val=' + v.course + ' onChange="Contact.update_here('+v.id +')"><option>....</option></select>');
 $('#table > tbody:first').append('<tr><td>' + contact.join('</td><td>') + '</td></tr>');
 });

功能:

update_here: function(check) {
alert(check);
    },

我收到错误 - "ReferenceError: 101 is not defined" (101 -> v.id)

【问题讨论】:

  • 您正在迭代的data $.each(data, function(k, v) { 没有id
  • 能否检查生成的html,看看属性onchange的值是什么
  • - 似乎 101 必须放弃“” - 我试图放弃,但它在参数列表之后给出了“'missing” "
  • @Bhushan:身份证?迭代时它会变成 v.id
  • onChange="Contact.update_here(\''+v.id +'\')"&gt; - 但我认为它不会解决问题

标签: javascript jquery drop-down-menu error-handling


【解决方案1】:

您将v.id 直接放入函数中,其中浏览器将101 作为变量而不是值,按照Arun 使用\' 的建议将其放在引号内。见下面代码

$.each(data, function(k, v) {
  var contact = new Array();
  contact.push('<input type="text" class="id" data-val="'+v.id +'"value="' +v.id + '" />');
  contact.push('<select class="" data-val=' + v.course + ' onChange="Contact.update_here(\''+v.id +'\')"><option>....</option></select>');
 $('#table > tbody:first').append('<tr><td>' + contact.join('</td><td>') + '</td></tr>');
 });

【讨论】:

  • 这应该不会引起任何问题,因为101 是一个数字文字...您将始终将fun(101) 称为fun('101')...因此我将其作为评论发布
  • 因为它是一个有效的文字浏览器不应该把它当作一个变量......但是如果你传递一个像abc 这样的字符串,那么我同意你需要将它包装在'' 中它作为文字
  • 但这适用于 OP。可能会发生 101 以字符串形式出现,因此在没有引号的情况下无法工作并将其视为变量。
猜你喜欢
  • 1970-01-01
  • 2018-11-13
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
  • 2019-04-23
  • 2014-04-04
  • 1970-01-01
相关资源
最近更新 更多