【问题标题】:Only first part of Javascript function being called仅调用 Javascript 函数的第一部分
【发布时间】:2013-02-21 13:43:39
【问题描述】:

我创建的这个函数有问题,第一部分调用正常,但在第一个 if 语句之后没有调用其他任何内容。我用过 JSfiddle,但它并没有发现严重的问题。

我通常使用 PHP 而不是 JS,所以我想知道这里是否缺少一些简单的东西?

function validatequestion(form){
        var e = document.getElementById("chooseqtype");
        var strQtype = e.options[e.selectedIndex].value;

        if(strQtype == "default"){
            alert("Please select a question type");
            return false;
        }

        if(strQtype == "textquestion"){
            fail = validatetextq(form.textquestiondesc.value)
            if(fail == "") return true
            else {
                alert(fail);
                return false;
            }
        }

        if(strQtype == "videoquestion"){
            fail = validatevideoq(form.videoquestiondesc.value)
            if(fail == "") return true;
            else {
                alert(fail);
                return false;
            }
        }

        //everything above works, after this point nothing seems to get called
        var a = document.getElementById("chooseatype");
        var strAtype = a.options[a.selectedIndex].value;

        if(strAtype == "textanswer"){
            //get the value of the number of text answers select box
            var t = document.getElementById("choosetextnumber");
            //put the value in variable strQtype
            var strTextno = t.options[t.selectedIndex].value;


            if(strTextno == "2tanswers"){
                fail = validatetexta1(form.textanswer1.value)
                fail += validatetexta2(form.textanswer2.value)
                if(fail == "") return true;
                else {
                    alert(fail);
                    return false;
                }
            }

        }   




        }

【问题讨论】:

  • 如果你从第一个返回 false ......
  • NITPICK:使用 else if!
  • 你实际上想用这段代码实现什么?
  • 你的意思是它执行前三个代码块之一,然后停止?如果是这样的话,那是因为你在他们每个人中都返回了 false。
  • 我正在尝试验证一些文本字段,但我使用 3 个选择菜单,因此并非所有字段都需要验证。例如,如果选择了文本问题,则会显示用于创建文本问题的文本字段。

标签: javascript if-statement syntax


【解决方案1】:

如果 strQtype 只能是您正在测试的 3 个值之一,那么您将无法进入代码的第二部分,因为您总是从每个 if 语句返回。

编辑:

你需要做的是不是returnfail == ""。由于您只是返回 true 我假设您不需要返回值,只需验证验证是否成功。那么你应该做的只是测试失败,例如if (! fail=="" )(语法可能是错误的,javascript 不是我的第一个语言。)在这种情况下,请执行您的 alert

或者你总是可以只写 3 个不同的函数,一个来测试每个菜单项,我可能会这样做。

【讨论】:

  • 感谢您的回答,但这种方法的问题是始终必须选择三个菜单。有一个菜单可以选择您要回答的问题类型,一个菜单可以选择回答的类型,还有一个菜单可以选择您回答的数量。
  • 好吧,如果是这样,那又回到了我原来的观点,因为你从前 3 个if 语句中的每一个返回,你将永远无法超越它们.您需要保存他们为第一个菜单选择的答案,即他们想要提出什么类型的问题,然后继续查看他们想要的答案类型。
  • 非常感谢您的帮助!正如您在编辑中提到的那样实施,现在可以完美运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-23
  • 2014-07-06
  • 2016-06-02
  • 2015-08-12
  • 2021-09-11
  • 1970-01-01
相关资源
最近更新 更多