JavaScript + iMacros if-else

时间:2014-08-01 07:55:23

标签: firefox csv macros imacros

我在Firefox中遇到iMacros的问题。

这是我的宏" test.js":

var macros;
var macrosrun;
var s_n = "\n";
var getExtract;
var i;

for (i=1; i<=3; i++) {
    macros = "CODE:";
    macros += "SET !ERRORIGNORE YES"+s_n;
    macros += "SET !EXTRACT_TEST_POPUP NO"+s_n;
    macros += "SET !DATASOURCE test\.csv"+s_n;
    macros += "SET !DATASOURCE_LINE "+i+s_n;
    macros += "SET !VAR1 {{!COL8}}"+s_n;
    macros += "ADD !EXTRACT {{!VAR1}}"+s_n;
    getExtract = iimGetExtract(1);
    iimDisplay(getExtract);
    if (getExtract == 1) {
        macros += "URL GOTO={{!COL5}}"+s_n;
    } else if (getExtract == 2) {
        macros += "URL GOTO={{!COL6}}"+s_n;
    } else if (getExtract == 3) {
        macros += "URL GOTO={{!COL7}}"+s_n;
    }
    macros += "WAIT SECONDS=1"+s_n;
    macrosrun = iimPlay(macros);
}

这是&#34; test.csv&#34;

1,"test","test",12345,"http://twitter.com","http://facebook.com","http://google.com",1,"Test 1"
2,"test","test",12345,"http://twitter.com","http://facebook.com","http://google.com",2,"Test 2"
3,"test","test",12345,"http://twitter.com","http://facebook.com","http://google.com",3,"Test 3"

我认为,如果&#34; 1&#34;在第8列的第一个字符串中,宏&#39; ll转到&#34; twitter.com&#34; 如果&#34; 2&#34; - &#34; facebook.com&#34;,如果&#34; 3&#34; - &#34; google.com&#34;

但是在真正的宏中运行3 - 1 - 2 ...而不是1 - 2 - 3 ...为什么?)

有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果在调用getLastExtract之前调用iimPlay,则会从数据源中提取正确的值。

以下是您的示例并进行了一些修改:

var macros;
var macrosrun;
var s_n = "\n";
var getExtract;
var i;
var col5, col6, col7;

for (i=1; i<=3; i++) {
    macros = "CODE:";
    macros += "SET !ERRORIGNORE YES"+s_n;
    macros += "SET !EXTRACT_TEST_POPUP NO"+s_n;
    macros += "SET !DATASOURCE test\.csv"+s_n;
    macros += "SET !DATASOURCE_LINE " + i + s_n;
    macros += "SET !VAR1 {{!COL8}}"+s_n;
    macros += "ADD !EXTRACT {{!VAR1}}"+s_n;
    macros += "SET !VAR1 {{!COL5}}"+s_n;
    macros += "ADD !EXTRACT {{!VAR1}}"+s_n;
    macros += "SET !VAR1 {{!COL6}}"+s_n;
    macros += "ADD !EXTRACT {{!VAR1}}"+s_n;
    macros += "SET !VAR1 {{!COL7}}"+s_n;
    macros += "ADD !EXTRACT {{!VAR1}}"+s_n;

    // iimPlay added before calling iimGetExtract
    macrosrun = iimPlay(macros);
    // pull all extracted values and split the string
    var extracted = iimGetExtract().split(/\[EXTRACT\]/);
    getExtract = parseInt(extracted[0]);
    col5 = extracted[1];
    col6 = extracted[2];
    col7 = extracted[3];

    macros = "CODE:";
    if (getExtract === 1) {
        macros += "URL GOTO=" + col5 +s_n;
    } else if (getExtract  === 2) {
        macros += "URL GOTO=" + col6 +s_n;
    } else if (getExtract  === 3) {
        macros += "URL GOTO=" + col7 +s_n;
    }
    macros += "WAIT SECONDS=1"+s_n;
    macrosrun = iimPlay(macros);
}