Loops CasperJS:如何传递参数并在循环中使用它们

Loops CasperJS:如何传递参数并在循环中使用它们,loops,phantomjs,casperjs,Loops,Phantomjs,Casperjs,我正在编写一个脚本,需要传递一些参数,传递参数的方式如下: xvfb-run casperjs --ignore-ssl-errors=true --ssl-protocol=any casper/server.js --checks='["215","216"]' 在server.js中,我将其分配给一个变量: var checks = casper.cli.get('checks'); 然后在下面的代码中,我在循环中使用代码: casper.each(checks, function(c

我正在编写一个脚本,需要传递一些参数,传递参数的方式如下:

xvfb-run casperjs --ignore-ssl-errors=true --ssl-protocol=any casper/server.js --checks='["215","216"]'
在server.js中,我将其分配给一个变量:

var checks = casper.cli.get('checks');
然后在下面的代码中,我在循环中使用代码:

casper.each(checks, function(check) {
 $('*[data-queue="'+ check+'"] input:checkbox').prop('checked', false);
});
我的问题是,尽管我执行console.logchecks以确认收到了参数,但脚本仍不断抱怨:

[error] [phantom] each() only works with arrays
不仅如此,如果我手动硬编码数组,循环也不会工作。

回调包含两个参数,第一个是Casper模块本身,第二个是迭代变量

casper.each(checks, function(self, check) {
    // ...
});
如果要操作HTML页面,则必须在页面的上下文中,在page.evaluate的内部进行操作:

更新

抱歉,没有注意到-checks='[215216]'的CLI参数 当然,它不是数组:

console.log( checks );
console.log( typeof(checks) );
注意引号''

“[215216]” 串

但如果您这样使用它:-checks=[215216] 在剧本中:

console.log( typeof(eval(checks)) );
console.log( eval(checks)[1] );
反对 216

当然cource eval是邪恶的,所以最好改变传入ID的格式

casperjs casper/server.js-checks=215216159425435

反对 [2152116159425435]


你好,Mario,你尝试过JSON.parse填充的checks变量吗?只是想知道。是的@Luca,我尝试了JSON.stringify;和JSON.parse;,同样的结果对于@Vaviloff的建议,我仍然得到相同的[error][phantom],每个都只适用于数组,还有其他想法吗?你是对的,数组格式错误,所以我能够解决这个问题。同样为了解决循环问题,我学到了无论什么,每个函数都需要先求值,整个过程都需要包装在casper中;作用谢谢你的帮助;
console.log( typeof(eval(checks)) );
console.log( eval(checks)[1] );
console.log( typeof(checks.split(",")) );
console.log( JSON.stringify(checks.split(",")) );