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