Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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_Function_Onclick_Stoppropagation - Fatal编程技术网

Javascript 这个函数参数是如何定义的?

Javascript 这个函数参数是如何定义的?,javascript,function,onclick,stoppropagation,Javascript,Function,Onclick,Stoppropagation,我正在尝试复制这个“onclickout模拟器”脚本,如下所示: 正如您所看到的,它工作得很好(在我测试过的所有浏览器中-所以就我所知,这不是一个浏览器兼容性问题) 我的解决方案中的代码如下所示: document.getElementById('bigBtn').onclick = function(event) { alert('button clicked'); if (event.cancelBubble) //THIS LINE GIVES 'EVEN

我正在尝试复制这个“onclickout模拟器”脚本,如下所示:

正如您所看到的,它工作得很好(在我测试过的所有浏览器中-所以就我所知,这不是一个浏览器兼容性问题)

我的解决方案中的代码如下所示:

document.getElementById('bigBtn').onclick = function(event) {
        alert('button clicked');
        if (event.cancelBubble) //THIS LINE GIVES 'EVENT IS UNDEFINED' ERROR
            event.cancelBubble = true;
        else
            event.stopPropagation();
    }
这可以在pageLoad()中找到

正如您所看到的,我从event.cancelBubble行中得到一个意外错误,因为event未定义。我一辈子都搞不懂为什么

注意:出于浏览器兼容性的原因,我以不同于fiddle演示的方式测试cancelBubble


非常感谢您的帮助,我真的很坚持这一点。

尝试使用DOM2事件模型。相反,请使用以下方法注册处理程序:

document.getElementById('bigBtn').addEventListener("click", yourFunction, false);

问题解决了。我没有以这种方式“模拟”onclickout事件,而是简单地将焦点(使用window.hash)设置到出现在“按钮点击”警报位置的菜单上,然后处理onblur事件以关闭它。

您说这不是浏览器问题,但是,在早期版本的IE中,事件将没有定义(因为他们使用window.event)。因此,您可以始终尝试将其添加到处理程序的顶部。如果(!event)event=window.event;在你的小提琴链接中,
event.cancelBubble
false
,这意味着
event
不是
未定义的
@Anji-是的,这是预期的-就像我说的-小提琴链接工作,但在我的解决方案中它不工作。@gillesc-我现在就试试,非常感谢…@gillesc-“Microsoft JScript运行时错误:对象不支持属性或方法'stopPropagation'“Microsoft JScript运行时错误:对象不支持属性或方法‘addEventListener’。这是一个与JavaScript相关的问题,不是JScript问题……:)哪个IE版本?在IE 9之前,您必须使用。谢谢您的回复。IE9。这真的难住我了,一点也不知道为什么这不起作用。