什么是' return'在JavaScript代码中

时间:2014-11-14 05:05:27

标签: javascript html

在这个简单的例子中,'return'用于三个地方。所以,我只是混淆了在函数中使用'return'。什么是使用这个'return'何时在函数内部使用? 主要是,我需要知道,在提交按钮上,“返回”用于“onclick”属性,请参阅此处<input type="submit" value="submit" onclick="return validateR();">。所以,也解释一下,'返回'究竟在这里做了什么。请。

<HTML>
    <HEAD>
        <TITLE>ComboBox Validation</TITLE>
        <script Language="JavaScript">
            function validateR(){
                var selectedCombobox = (comboForm.technology.value);
                if (selectedCombobox == "-1") {
                    alert("Please Select Technology");
                    return false; //here
                }
                if (selectedCombobox == "Servlet") {
                   alert("Yse");
                }
                return true; //here
            }
       </script>
   </HEAD>
 <BODY>
    <form name="comboForm">
        <select name="technology">
            <option value="-1">Select</option>
            <option value="JSP">Java Server Pages</option>
            <option value="Servlet">Servlet</option>
            <option value="PHP">PHP</option>
            <option value="ASP">ASP</option>
        </select>
        <input type="submit" value="submit" onclick="return validateR();">  //here
    </form>
 </BODY>
</HTML>

6 个答案:

答案 0 :(得分:6)

当你有一个事件处理程序时,例如

<input type="submit" value="submit" onclick="return validateR();">

您可以向活动返回一个值。如果返回值false,则会阻止事件的默认行为。您可以将false返回到onsubmit事件,以防止提交该页面。

总结一下,

return validateR() --> return true (or false) --> prevents default behavior of event

此行为在所有浏览器中都是标准化的。它后来被event.preventDefaultevent.stopPropogation的组合所取代,它们完全相同。但是,有些人更喜欢内联语法(return func();),它也适用于旧版本的IE。

我已经掩饰了一些关于事件冒泡的细微之处。以下是对更深入讨论的一些参考:

答案 1 :(得分:1)

validateR是一个返回函数。它正在验证form comboForm,以确保当一个值不是&#34;选择/ -1&#34;已在提交form时被选中。因此,对于值为&#34; -1&#34;的情况,它返回false。否则返回true

现在,对于提交输入,在返回click时会阻止默认false。所以这意味着当函数validateR返回false时,form不会被提交,因为会阻止默认的onclick行为。否则,它返回true并提交表单。

相同的技术(虽然过时)用于链接,点击以下内容不会将您带到URL。

<a href="http://www.stackoverflow.com" onclick="return false">Clicking this does nothing</a>

答案 2 :(得分:0)

是否提交表格是验证功能!如果您尚未选择该选项,则表单将不会提交。 这就是保留false的原因。

如果选择了Servlet选项,则alert('yes')

答案 3 :(得分:0)

函数内部的返回是&#34;响应&#34;对于代码中的特定事件或情况..在您的情况下,&#34;回答&#34;您的提交按钮将调用您的validateR函数,该函数将:

如果你的selectedComboBox = -1,

返回false 如果selectedComboBox =&#34; Servlet&#34;则返回警报 否则它应该返回true

我相信按钮的返回是不必要的(因为调用函数已经返回了一些东西)..不确定。

答案 4 :(得分:0)

您可以使用“返回功能”的一种情况是,当您遵循基于原型的对象模型时,您希望能够拥有您想要保护的私有方法或成员。因此,您将在t中定义其他函数,并声明一些变量,以便它们位于闭包内。然后,根据原型返回表示要构造的实际对象的函数。

外部世界无法访问这些私有成员和方法,因为它们不会暴露在对象中并且是外部函数的本地,但是由于关闭,您可以访问。

答案 5 :(得分:0)

非常简单的解释

保持简单; onclick是它自己的“功能”。你基本上是在内部(引号内)编写该函数的语句/定义。

浏览器具有不同的“回调”(松散地使用术语),具体取决于具有click功能的元素。例如,如果返回true(或根本没有返回任何值),则浏览器将转到新页面(如果它是锚点/链接);如果它是提交按钮,它将提交表单。要取消浏览器的默认操作,您可以返回false

分析您的示例

您的示例是编写onclick="var success=validateR(); return success;"的较长方式,因此浏览器操作取决于您正在调用的函数的操作。如果验证成功,那么浏览器将运行其回调,最有可能加载另一个页面;否则它不会做任何事情,在这种情况下你可能有其他代码显示某种错误信息。