仅在已选中时单击复选框

时间:2014-05-04 16:41:11

标签: javascript checkbox casperjs

我想点击一个复选框,只要它已被选中。

以下代码似乎无效:

if(this.test.assert(this.evaluate(function () {return document.getElementById('myID').checked;}))) 
{           
    this.click('#myID');     
}

正确的语法是什么?

2 个答案:

答案 0 :(得分:3)

test.assert*函数用于声明某个条件。删除它是因为您想要分支执行。否则你的代码是正确的。

test.assertExists("#myID");
// this function will not be executed if #myID wasn't there
var id = 'myID';
if(this.evaluate(function (pageCtxId) {return document.getElementById(pageCtxId).checked;}, id))
{           
    this.click('#'+id);     
}

答案 1 :(得分:1)

您可能希望这样做:

casper.waitFor(function checked() {
    return this.evaluate(function() {
        return document.getElementById('myID').checked === true;
    });
}, function then() {
    this.click('#myID');
});