为什么返回在onclick事件处理程序中使用?

时间:2010-09-11 02:25:11

标签: javascript

为什么在下面的onclick even处理程序中使用“return”,似乎在按钮的onclick事件中有或没有返回规范的情况下运行?

input type="radio" name="radCPUSpeed" value="6 Ghz"
                       onclick="return radCPUSpeed_onclick(2)"

该函数似乎没有对它做任何事情,为什么你需要在上面的输入声明中返回?

function radCPUSpeed_onclick(radIndex)
   {
       var returnValue = true;
       if (radIndex == 1)
       {
           returnValue = false;
           alert("Sorry that processor speed is currently unavailable");
           // Next line works around a bug in IE that doesn't cancel the
           // Default action properly
           document.form1.radCPUSpeed[radCpuSpeedIndex].checked = true;
       }
       else
       {
           radCpuSpeedIndex = radIndex;
       }
       return returnValue;
   }

3 个答案:

答案 0 :(得分:4)

从事件处理函数返回false将阻止与事件关联的默认浏览器行为。返回任何其他值(包括undefined,如果没有执行return语句则返回的值)将不会。重要的是,返回false 会阻止事件冒泡DOM树,并且仍然会执行附加到DOM树上方节点的事件处理程序。

另请注意,这不适用于通过addEventListenerattachEvent附加的事件侦听器功能。此类函数中的返回值无效。

答案 1 :(得分:2)

当您从任何事件处理程序返回false时,事件将不会冒泡。所以我们通常会说这个按钮会提交一个表单,当你返回false时,这不会发生。基本上它会阻止事件的默认操作。

答案 2 :(得分:-1)

基本上,在'='符号后面的值或任何内容都是事件处理程序的函数。 作为一个原因,必须使用return,以便函数返回一个布尔值给事件处理程序-onclick,onsubmit等。

onclick="return radCPUSpeed_onclick(2)

以上代码可以中断为:     的onclick =“功能(){radCPUSpeed_onclick(2)} 因此,等于符号之后的任何内容实际上都在函数内部,并且需要返回语句。