如果条件不适用于输入变量

时间:2013-04-25 16:35:13

标签: javascript

我在slideAC(数据)功能方面遇到了问题。

如果条件似乎在图像条件中有问题(data [0] ==“picture”)

我已经尝试通过alert(data [0]);

提醒数据以测试输入值

结果是“图片”我也不知道是什么问题??

因为其他测试条件正常工作。


这里是extractData中的输入数据(数据< - 数组)FUCNCTION

(已经通过使用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。对不起如果我的措辞让你感到困惑。

2 个答案:

答案 0 :(得分: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()方法的补丁。

答案 1 :(得分:0)

如果js说这是假的,那就是!您应该在调试器中评估您的变量以查看发生的情况。如果使用Chrome,只需调用调试程序即可中断和检查变量值。

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