2017-09-10 3 views
0

は私がウェブサイトは、私がloop4()を実行しようとしていますddlLevel3Phantomjsはvarの値を更新しますか?

var page = require('webpage').create(); 
    page.onConsoleMessage = function(str) { 
     console.log(str); 
    } 
     var z=0; 
var z_l=0; 
var op1='#ddlDivision' 
var op2='#ddlLevel1' 
var op3='#ddlLevel2' 
var op4='#ddlLevel3' 


function selectOption(selector, optionIndex) { 
    page.evaluate(function(selector, optionIndex){ 

    var op4='#ddlLevel3' 

     var sel = document.querySelector(selector); 
    var sel4 = document.querySelector(op4); 
     sel.selectedIndex = optionIndex; 

    var event = document.createEvent("UIEvents"); // See update below 
    event.initUIEvent("change", true, false); 
     sel.dispatchEvent(event); 
    this.dispatchEvent(event); 

    z_l=sel4.length; 
     console.log("len: "sel4.length+" "+z_l); 
    }, selector, optionIndex); 
} 


page.open(...{ 
function loop4() { 

    selectOption(op4,z); 
    window.setTimeout(function() {  
     go();   
     z++;      
     if (z < z_l) {    
     loop4();    
     } 

    }, 3000); 
} 
loop4(); 
}); 

ドロップダウンリストが含まれている以下のphantomjsプログラムを持っています。しかし、の値が0からに変更されていません。

インラインconsole.log( "len:" sel4.length + "" + z_l);ここに値が適切です。

しかし、そのないバックloop4()(Z < z_l)場合で反射され、常に残ります。 私は何が間違っていますか?

+0

申し訳ありませんが、変数はあまり意味がありませんので、デバッグは難しいです。あなたはおそらく少しリファクタリングできますか?また、完全な最小限の例を公開してください、 'page.open ...'は役に立ちません。 – Vaviloff

+0

@Vaviloff selectOption()が呼び出されるたびに、z_lの値を更新したいと思っていました。 – abhinandanbr

答えて

0

私はz_lの値を更新したいと思っていました。ちょうどpage.evaluateを使用し、それを以下のようにz_lに割り当てる必要があります。 loop4()でこれらの変更を行っただけです。

function loop4() { 
var z_l = page.evaluate(function() { 
    var op4='#ddlLevel3' 
     return document.querySelector(op4) 
    }); 

selectOption(op4,z); 
. 
. 
. 
} 
+0

これはあなた自身の質問に対する答えですか? – Vaviloff

+0

@Vaviloffええ、それは私が後で分かった答えです。 – abhinandanbr

関連する問題