2012-02-16 17 views
0

吐溫在Xpages中不起作用,我用setTimeOut函數進行延遲。
但是這並不是我所關心的。 alert正在工作,並在使用setTimeOut函數時發生延遲。但改變風格是行不通的...實際上最後一個行動的例子只能用如何動態改變Xpage中的風格?其實我想眨眼不同顏色的標籤?

我已經使用的代碼是。

var t = 1; 
var flag; 

function doMove() { 
    alert("Hi"); 
    t = t + 1; 
    if ((t % 2) == 0) { 
     document.getElementById("#{id:label1}").style.color = "blue"; 
     flag = test() 
    } 
    else { 
     document.getElementById("#{id:label1}").style.color = "red"; 
     flag = test() 
    } 

} 


function test() { 
    var startTime = new Date().getTime(); 
    while (new Date().getTime() < startTime + 1000); 
    return true; 
} 

for (var l = 0; l <= 2; l++) { 
    doMove(); 
} 






XSP :  
Please see the following 
<xp:label value="Testing" id="label1" style="font-weight:bold;font-  size:14pt;color:rgb(255,0,0)"> 
</xp:label>  
<xp:button value="Dojo" id="button3"> 
    <xp:eventHandler event="onclick" submit="false"> 
     <xp:this.script><![CDATA[  


var t = 1; 
var flag; 

function doMove() { 
    alert("Hi"); 
    t = t + 1; 
    if ((t % 2) == 0) { 
     document.getElementById("#{id:label1}").style.color = "blue"; 
     flag = test() 
    } 
    else { 
     document.getElementById("#{id:label1}").style.color = "red"; 
     flag = test() 
    } 

} 


function test() { 
    var startTime = new Date().getTime(); 
    while (new Date().getTime() < startTime + 1000); 
    return true; 
} 

for (var l = 0; l <= 2; l++) { 
    doMove(); 
}  


    ]]></xp:this.script> 
    </xp:eventHandler> 
</xp:button> 
+0

需要更多的信息才能夠回答。你如何在你的XPage中使用它?嵌入的腳本在哪裏/如何定義label1?你可以在問題中包含你的XPage的XSP嗎? – 2012-02-16 14:29:52

+0

謝謝傑里米請看到更新的問題... – Ramkumar 2012-02-23 06:34:40

回答

0

好吧,我現在好多了(對不起)理解這個問題,但是這是因爲for循環。瀏覽器在完成所有循環後更新接口。我花了一些時間在這個代碼上。使用最大變量,您將設置閃爍文本的次數。我希望這能解決問題。

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" createForm="false"> 

    <xp:label value="Label" id="label1"></xp:label> 


    <xp:eventHandler event="onClientLoad" submit="false"> 
     <xp:this.script><![CDATA[var t = 1; 
var flag; 
var max = 5; 

function doMove() { 

    t = t + 1; 
    if (t > max){ 
     return; 
    } 
    if ((t % 2) == 0) { 
     document.getElementById("#{id:label1}").style.color = "blue"; 

     flag = setTimeout(doMove, 1000); 
    } 

    else { 
     document.getElementById("#{id:label1}").style.color = "red"; 

     flag = setTimeout(doMove, 1000); 
    } 



} 

doMove(); 

]]></xp:this.script> 
    </xp:eventHandler> 
</xp:view> 
2

也許不是嘗試使用道場:

dojo.style("#{id:label1}", "color", "blue"); 

dojo.style("#{id:label1}", "color", "red"); 
+0

對不起渡輪Kranenburg這也是行不通的......謝謝, – Ramkumar 2012-02-17 09:39:06

0

您的代碼工作正常,所以必須要打破你的腳本一些其他的代碼。 我已將此添加到新的Xpage,並且它閃爍着紅色和藍色!

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 

    <xp:label value="Label" id="label1"></xp:label> 
    <xp:eventHandler event="onClientLoad" submit="false"> 
     <xp:this.script><![CDATA[var t = 1; 
var flag; 

function doMove() { 
    alert("Hi"); 
    t = t + 1; 
    if ((t % 2) == 0) { 
     document.getElementById("#{id:label1}").style.color = "blue"; 
     flag = test() 
    } 
    else { 
     document.getElementById("#{id:label1}").style.color = "red"; 
     flag = test() 
    } 

} 


function test() { 
    var startTime = new Date().getTime(); 
    while (new Date().getTime() < startTime + 1000); 
    return true; 
} 

for (var l = 0; l <= 2; l++) { 
    doMove(); 
}]]></xp:this.script> 
    </xp:eventHandler></xp:view> 
+0

但渡輪請刪除該代碼的警報,現在你看到哪個不工作...只有最後一個我們的功能實例正在工作。, – Ramkumar 2012-02-23 09:25:41

+0

你是對的。但是,這不是一個JavaScript /瀏覽器的東西,它會一直等到腳本完成,然後更新用戶界面。我在代碼中添加了'createelement',腳本完成後,創建了多個元素(使用不同的樣式)。我想你需要使用settimeout函數。 – 2012-02-23 23:19:46

0

這是沒有提示的工作。之所以你的腳本不工作,是因爲在完成之前,will循環會阻塞用戶界面。看起來它什麼都沒做,但它確實如此。您可以通過向您的html頁面添加新元素來測試它。在腳本之後,您將看到在刷新用戶界面時添加了多個元素。

你真的應該使用setTimeout函數此工作:

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" createForm="false"> 

    <xp:label value="Label" id="label1"></xp:label> 


    <xp:eventHandler event="onClientLoad" submit="false"> 
     <xp:this.script><![CDATA[var t = 1; 
var flag; 

function doMove() { 

    t = t + 1; 
    if ((t % 2) == 0) { 
     document.getElementById("#{id:label1}").style.color = "blue"; 

     flag = setTimeout(doMove, 1000); 
    } 

    else { 
     document.getElementById("#{id:label1}").style.color = "red"; 

     flag = setTimeout(doMove, 1000); 
    } 

} 


for (var l = 0; l <= 2; l++) { 
doMove(); 


} 


]]></xp:this.script> 
    </xp:eventHandler> 
</xp:view> 
+0

謝謝它正在工作很好...說明好我明白了 – Ramkumar 2012-02-24 09:06:59

+0

請讓我知道,爲什麼顏色不斷變化,至於我的擔心它只能改變它的顏色3次。 – Ramkumar 2012-02-24 09:44:00

+0

對不起,我在睏倦模式。我抓住了...有趣...對不起,如果和其他調用相同的功能... – Ramkumar 2012-02-27 09:07:36