Это работает без предупреждения. Причина, по которой ваш скрипт не работает, потому что цикл воли блокирует пользовательский интерфейс, пока это не будет сделано. Похоже, он ничего не сделал, но это сделал. Вы можете проверить это самостоятельно, добавив новые элементы на свою 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>