【问题标题】:javascript confirm function ok and cancel returns same resultjavascript确认功能正常并取消返回相同的结果
【发布时间】:2014-11-07 18:02:52
【问题描述】:

这里在result()方法中,每当涉及到else部分,我都需要退出函数callthis()。

它不应该执行kumar()函数。

这可能吗? 其实我可以这样用

if(result)          //if this method is true, it will come inside
{
    kumar();
}

但这不是我想要的。从 result() 方法返回 false 时,它​​应该退出循环 function calthis()

function calthis()
{
  var i=1;
  if(i==0)
  {
    alert("inside if");
  }
  else
  {
    alert("inside else");
    result();
    kumar();
  }

}
function result()
{
  var res = confirm("are you wish to continue");
  if(res==true)
  {
    return true;
    alert("inside if result");
  }
  else
  {
    return false;
  }
}
function kumar()
{
  alert("inside kumar");
}
<a href="" onclick="calthis();">Click here</a>

【问题讨论】:

  • 顺便说一句,您应该停止使用alert 来跟踪代码的执行流程。习惯使用console.log 或浏览器中内置的实际调试器,它可以让您一次单步执行一条指令。
  • 你刚刚问了这个问题,它也有同样的问题!!! stackoverflow.com/questions/26805106/…
  • epascarello:别误会我。在上一个问题中,我被错误地问了..所以才再次问清楚。这略有不同。正如你所说,你可以使用 if(返回 true 的方法)。我也用过那个。谢谢你的回答..
  • 还是一样的问题。
  • 这个问题有些不同。 return 应该从函数中出来..

标签: javascript jquery


【解决方案1】:

这里有很多错误。

首先,if (result) 只是测试变量result 是否包含真值,它实际上并没有调用函数。如果要测试函数的返回值,则需要

if (result()) {

其次,您不理解return 立即 离开当前功能。你不能有意义地这样做:

if(res==true)
{
return true;
alert("inside if result");
}

无法联系到alert。当遇到return true 时,该函数立即返回。

第三,要提早退出callThis,你只需要提早return。由函数callThis 有条件地返回;您不能从 result 函数内部强制返回。如果调用它的上下文,函数不能强制返回。确定kumar 是否应该运行并不取决于result 函数的内部。您不能直接影响调用方法中的执行路径。 result 所能做的就是返回一些东西,或者(在这种情况下不必要的复杂)接受一个回调并有条件地执行它。

如果result() 的结果为假,则只需return 来自callThis

function calthis()
{
  var i=1;
  if(i==0)
  {
    alert("inside if");
  }
  else
  {
    alert("inside else");
    if (!result()) return;
    kumar();
  }

}

【讨论】:

  • 谢谢...我明白了..+1 详细解释。
【解决方案2】:

要退出任何功能,只需使用return;

但是,如果用户单击确认,您似乎想调用一个函数,对吗?如果是这样:

var res = confirm("are you wish to continue");
if (res === true) 
{ 
   kumar(); 
}

如果你想在用户不点击确认的情况下调用一个函数:

var res = confirm("are you wish to continue");
if (!res) 
{ 
   kumar(); 
}

【讨论】:

    【解决方案3】:

    那里有很多令人困惑的代码,但如果想停止一个函数,只需使用“return false;”,代码执行就会停止

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多