onclick()参数成为对象Object

时间:2016-01-05 22:02:17

标签: javascript

我有以下功能:

'countyOfflineNote': function (county) {
    console.log(county);
    console.log('logged county');
    var extra = '';
    extra = '...more logic...'; 

    var message = '...some logic...';


    var title = 'Create Offline County Note for ' + county.county;
    $('body').appModal({
        appliedTo: '',
        title: title,
        type: '',
        message: 'Please enter a note for the current county status',
        submessage: '',
        template: 'simple',
        contents: message,
        cancel: "<input type='button' value='Cancel' class='button action left cancel' onclick='$EP.modules.appModal.cancel(\"" + county "\");' />",
        icon: 'info',
        callback: ''
    });

    $('#support-question').focus();
}

我遇到的问题是输入HTML。当我们将county传递给cancel()函数时,我最终会在控制台中看到[object Object]。我如何更改传递参数的方式?

以下是cancel()功能:

'cancel': function (county) {

    county.isOffline = !county.isOffline;
    $EP.modules.appModal.close();
}

2 个答案:

答案 0 :(得分:1)

如果您的$('body').appModal({...})代码正在向DOM添加元素,您可以1)从onclick属性中的输入html中删除cancel处理程序,2)添加到此输入html和id类似于inputId,并在元素附加到DOM后附加事件处理程序 - 将此代码放在$('body').appModal({...})下面:

$('#inputId').click( function(county) {
    county.isOffline = !county.isOffline;
    $EP.modules.appModal.close();
})

或者更确切地说:

$('#inputId').click( function() {
    county.cancel();
})

并将cancel方法添加到county对象:

cancel = function() {
    this.isOffline = !this.isOffline;
    $EP.modules.appModal.close();
}

答案 1 :(得分:0)

您可以在使用JSON.stringify()与该元素连接之前对县对象进行字符串化,然后您将对象作为字符串。

在函数声明中,您需要将该字符串解析为对象,因为您可以使用JSON.parse()

'cancel': function (county) {
  county = JSON.parse(county);

  county.isOffline = !county.isOffline;
  $EP.modules.appModal.close();
}