Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么缺少的函数参数的值为;[对象]”;?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么缺少的函数参数的值为;[对象]”;?

Javascript 为什么缺少的函数参数的值为;[对象]”;?,javascript,jquery,Javascript,Jquery,我有一个注册模式窗口,它应该在两种情况下出现: a) 点击网页上的按钮; b) 该网页的URL中有“#modal”(例如mydomain/mypage.html#modal)-在这种情况下,该网页应使用其上方的模式窗口加载 场景A的工作原理如下: function showModal(modalType) { var getTarget = $(this).data('target'); if (!getTarget) { var target = modalTy

我有一个注册模式窗口,它应该在两种情况下出现: a) 点击网页上的按钮; b) 该网页的URL中有“#modal”(例如mydomain/mypage.html#modal)-在这种情况下,该网页应使用其上方的模式窗口加载

场景A的工作原理如下:

function showModal(modalType) {
    var getTarget = $(this).data('target');
    if (!getTarget) {
        var target = modalType;
    } else {
        var target = getTarget;
    }    
        
    $(target).show();
    return false;
}
  • Html
情景B:

  • JS
showmodel
功能的工作原理如下:

function showModal(modalType) {
    var getTarget = $(this).data('target');
    if (!getTarget) {
        var target = modalType;
    } else {
        var target = getTarget;
    }    
        
    $(target).show();
    return false;
}
这很有效。 但是,我以前尝试使用此函数时略有不同:

function showModal(modalType) {
    if (!modalType) {
        var target = $(this).data('target');
    } else {
        var target = modalType;
    }    
        
    $(target).show();
    return false;
}
这不适用于场景A。 我认为,如果函数没有指定参数,它将得到
modalType=undefined
,然后
var target=$(this.data('target')。我添加了
alert(target)
,发现点击按钮后,我得到了
[object object]
作为
target
的值


有人能解释一下原因吗?

事件处理程序回调的第一个参数是事件对象。因此,
如果(!modalType)
将永远不会为真

您可以检查它是否是选择器版本的字符串。比如:

if ( typeof modalType !== 'string' )
下面是一个简化的示例:

函数doStuff(东西){
如果(!东西){
//在使用的两种场景中不会被调用
console.log('no thing');
返回
}
if(typeof thing==“string”){
log('参数为字符串:',thing)
}否则{
//事物是事件对象
常量事件=事物;
console.log('Event type:',Event.type);
console.log('Target:',event.Target)
//“this”也将是上发生的元素实例事件
console.log('Tagname:',this.Tagname);
}
}
$('button')。在('click',doStuff');
doStuff('SomeString')

单击我
function showModal(modalType) {
    if (!modalType) {
        var target = $(this).data('target');
    } else {
        var target = modalType;
    }    
        
    $(target).show();
    return false;
}
if ( typeof modalType !== 'string' )