0

slideAC(data) 関数に問題があります。

写真の状態に問題がありそうな場合 (data[0] == "picture")

alert(data[0]); で入力値をテストするためにデータをアラートしようとしました。

結果も「写真」です。何が問題なのかわかりませんか??

他のテスト条件が正しく機能するためです。


extractData(data <-- array) 関数の入力データは次のとおりです。

(split("\n") を使用して他の関数から既に分割されています)

slide
,- width 400
,- height 300
,- into #slide1
,- picture
,+[pic/001.png]
,+[pic/002.jpg]
,+[pic/003.jpg]
,+[pic/004.jpg]
,

コードの目的は、上記のテキストから単語を抽出し、コードを生成することです。

  function extractData(data){

    alert(data);
    var n = 0;
    var step1 = "";
    var step2 = "";
    var step3 = "";
    var step4 = "";
    var picture =[];
        //check '@' command by call the first line data
        if(data[0].indexOf("slide") !== -1){

            for(var i=1; i<data.length; i++){
//                alert(n);

                switch (n){
                    case 0:///////////////////////////////////////
//                    alert("case1");
                    //extract from '-'
                    if(data[i].indexOf('-') !== -1){
                        step1 = data[i].replace('-','');
                        step2 = step1.split(' ');
                        step3 = step2.slice(1,step2.length);
                        //slide Attribute Compiler
                        n = slideAC(step3);

                    }else{
                        alert("out");
                    }//end of if condition
                    break;

                    case 1:///////////////////////////////////////
//                    alert("case2");
                    //extract from '+'
                    if(data[i].indexOf('+') !== -1){
                        step1 = data[i].replace('+','');
                        step2 = step1.replace("[","");
                        step3 = step2.replace("]","");
                        picture.push(step3);
                        alert(step3);

                    }else if(data[i].indexOf('-') !== -1){
                        step1 = data[i].replace('-','');
                        step2 = step1.split(' ');
                        step3 = step2.slice(1,step2.length);
                        //slide Attribute Compiler
                        n = slideAC(step3);
                    }else{
                        //Error
//                        alert("wrong pic syntax");
//                        javascript_abort();
                    }//end of if condition
                    break;

                }//end of iswitch case

            }//end of item for loop

        }else if(data[0].indexOf("menu") !== -1){
            //Provision
        }else if(data[0].indexOf("form") !== -1){
            //Provision
        }else{
            javascript_abort();
        }//end of if condition


    }//end of syntaxCompiler


    //slide Attribute Compiler
    function slideAC(data){
//    alert(data[0]);

    var a = 0

            if(data[0] == "width"){
                var propWidth = data[1];
//                alert(data[0] + " : " + propWidth);
//                alert(typeof data);
                a = 0;
            }else if(data[0] == "height"){
                 var propHeight = data[1];
//                alert(data[0] + " : " + propHeight);
//                alert(typeof data);
                a = 0;
            }else if(data[0] == "into"){
                var propInto = data[1];
//                alert(data[0] + " : " + propInto);
//                alert(typeof data);
                a = 0;
            }else if(data[0] == "picture"){
                a = 1;
            }else{
                alert("why");
//                javascript_abort();
            }//end of if condition

        return a;

    }//end of slide attribute compiler

何かアドバイスはありますか?? 助けてください

if条件が正しく機能するようにしたいだけです

前もって感謝します

PS。申し訳ありませんが、私の言葉遣いが混乱を招く場合。

4

2 に答える 2

2

単語の前後にスペース文字があると思います。分割の結果の良い図を示していないか、元の入力とそれをどのように分割しているかを示していないため、わかりにくいです。

このような場合は、トリミングすることができます。switchあなたの の代わりにステートメントを使用しましたif/else if/else

    // trim the string-------v
            switch(data[0].trim()) {
            case "width":
                var propWidth = data[1];
//                alert(data[0] + " : " + propWidth);
//                alert(typeof data);
                a = 0;
                break;
            case "height":
                 var propHeight = data[1];
//                alert(data[0] + " : " + propHeight);
//                alert(typeof data);
                a = 0;
                break;
            case "into":
                var propInto = data[1];
//                alert(data[0] + " : " + propInto);
//                alert(typeof data);
                a = 0;
                break;
            case "picture":
                a = 1;
                break;
            default:
                alert("why");
//                javascript_abort();
            }

.trim()古いブラウザーをサポートする場合は、メソッドのパッチが必要になります。

于 2013-04-25T16:42:06.863 に答える
0

js が false だと言うなら、それは間違いです! デバッガーで変数を評価して、何が起こっているかを確認する必要があります。Chrome を使用している場合は、デバッガーを呼び出して、vars 値を中断して検査します。

http://msdn.microsoft.com/en-us/library/ie/0bwt76sk(v=vs.94).aspx

于 2013-04-25T16:43:03.247 に答える