0

我在 slideAC(data) 函数中遇到问题。

如果条件似乎在图片条件中有问题(数据[0] ==“图片”)

我已经尝试通过 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说是假的,那就是!您应该在调试器中评估您的变量以查看发生了什么。如果使用 Chrome,只需调用调试器来中断和检查 vars 值。

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

于 2013-04-25T16:43:03.247 回答