0

私が作成したこの関数に問題があります。最初の部分は正常と呼ばれますが、最初のifステートメントの後は他に何も呼び出されていません。私はJSfiddleを使用しましたが、深刻な問題を特定するものではありません。

私は通常JSではなくPHPを使用しているので、ここで欠けている単純なものがあるかどうか疑問に思っています。

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;
                }
            }

        }   




        }
4

1 に答える 1

0

strQtypeテストしている3つの値の1つにしかなり得ない場合は、これらの各ifステートメントから常に戻るため、コードの2番目の部分に到達する方法はありません。

編集:

あなたがする必要があるのはいつではありません 。戻ってきたばかりなので、値を返す必要はないと思います。検証が成功したことを確認してください。次に実行する必要があるのは、失敗をテストすることだけです。たとえば (構文が間違っている可能性があり、javascriptは私の最初の言語ではありません)。その場合は、を実行します。 returnfail == ""trueif (! fail=="" )alert

または、常に3つの異なる関数を作成することもできます。1つは各メニュー項目をテストするためのもので、これはおそらく私が行うことです。

于 2013-02-21T13:59:06.973 に答える