JavaScript - 在函数内连接 2 个参数不起作用

JavaScript - Concatenating 2 parameters inside a function not working

本文关键字:参数 不起作用 连接 函数 JavaScript      更新时间:2023-09-26

我正在尝试解析 2 个数字作为函数saveQuestion函数的参数,但它不起作用。

$("#questionRow")
.append('<input type="submit" class="btn btn-default" id="saveQuestion'
        + addSectionCount + '" value="Save question ' 
        + addSectionCount + '" onclick="saveQuestion(' 
        + addOpSectionCount + ''',''' addSectionCount + ')" ></div>');

如果您只是使用 jQuery 来注册正确的回调函数而不是使用 90 年代风格的内联事件处理程序,那么它会不那么脆弱并完全避免这个问题:

$('<input type="submit" />')
    .attr('id', 'saveQuestion' + addSectionCount)
    .val('Save question ' + addSectionCount)
    .on('click', function() {
        saveQuestion(addOpSectionCount, addSectionCount);
    })
    .appendTo('#questionRow')'

还要注意jQuery函数的其他用途,以避免在HTML字符串中使用字符串连接。

注意:我已经反转了append,以便链接的.on调用适用于新创建的元素,而不是#questionRow

注意 2:我通常会使用 $('<el>', {id: ..., val: ...}) 但 ISTR,MSIE 对输入元素的语法有(有?

正如 Luca 提到的,你缺少一个 + 运算符。您也没有在 saveQuestion 的参数中添加足够的单引号来格式化它。这应该有效:

$("#questionRow")
   .append('<input type="submit" class="btn btn-default" id="saveQuestion'
       + addSectionCount + '" value="Save question ' 
       + addSectionCount + '" onclick="saveQuestion(''' 
       + addOpSectionCount + ''',''' + addSectionCount + ''')" ></div>');
   });

正如其他人所提到的,由于您无论如何都在使用 jQuery,因此您应该使用 jQuery 将单击事件处理程序附加到输入:

$('#saveQuestion'+addSectionCount).on('click', function() {
   // do stuff
});

您似乎在代码末尾错过了 + 运算符

$("#questionRow")
    .append('<input type="submit" class="btn btn-default" id="saveQuestion'
        + addSectionCount + '" value="Save question ' 
        + addSectionCount + '" onclick="saveQuestion(' 
        + addOpSectionCount + ''','''
        + addSectionCount + ')" ></div>');