0

我正在使用 JavaScript JQuery,当我尝试在字段中显示变量的内容时,它不起作用。有我的代码:

function editEvolution(pos, nature, desc, di) {
      $('#diE').val(di);
      $('#natureE').val(nature);
      $('#descE').val(desc);

      $('#BtnAddEditEvo').attr('value', "Update");
      $('#BtnAddEditEvo').attr('onclick', "doEditEvolution("+pos+")");

}

提前感谢您的帮助。

fields 的值,如果 vars nature, desc 是字符串$('#diE')$('#natureE')$('#descE')不会改变,但如果它是数字则有效

4

2 回答 2

7

问题是你混合了原生 JS、内联 JS 和 jQuery 世界中最糟糕的东西。你永远不会把代码放在一个字符串中,句号。如果你这样做,你就做错了。

那么..如何正确地做到这一点?

$('#BtnAddEditEvo').val('Update').on('click', function() {
    doEditEvolution(pos);
});

如果您editEvolution在同一个对象上多次调用,请.off('click')在调用之前添加.on(...)以取消绑定先前的处理程序。

于 2013-09-11T14:48:19.417 回答
2

首先不要使用attr来设置onclick...

我会解释什么是错的

$('#BtnAddEditEvo').attr('onclick', "doEditEvolution("+pos+")");

如果pos="foo",它将呈现为

<div onclick="doEditEvolution(foo);"></div>

看到问题了吗?它正在寻找一个变量foo。您需要添加引号。

$('#BtnAddEditEvo').attr('onclick', "doEditEvolution('"+pos+"')");
                                                     ^       ^

为什么数字有效?因为数字不需要引号。它进行了有效的调用。它呈现为:

<div onclick="doEditEvolution(3);"></div>

您需要做的是正确使用 jQuery 并使用事件。

$('#BtnAddEditEvo').on('click', function() { doEditEvolution(pos); });

你应该用.val()

于 2013-09-11T14:52:43.313 回答