我正在使用Apex 4.0.2。我的目标是在我成功填写表格后,将我的成功消息闪现在顶部。我有一个javascript函数:
<script type="text/javascript">
{var i = 1,timer;
window.onload=function() {
timer = setInterval('flash()', 500);
}
function flash() {
if (i<10000) {
if (i%2 == 0) {
document.getElementById('flash').style.backgroundColor = '#ffffff';
} else {
document.getElementById('flash').style.backgroundColor = '#ffff00';
}
} else {
document.getElementById('flash').style.backgroundColor = '#ffffff';
clearInterval(timer);
}
i++;
}
</script>
我最初将此代码放在表单分支到的页面的javascript选项卡上。后来我将它移动到了进程成功消息以及对函数的调用
<center>
<table id="flash" BORDER=0 >
<tr>
<td>Success!</td>
</tr>
</table>
</center>
我从Firebug页面收到错误:
document.getElementById("flash") is null
document.getElementById('flash').style.backgroundColor = '#ffff00';
Internet Explorer告诉我: 消息:需要对象
我认为我的问题是成功消息区域对象并不总是存在。有没有办法只在我调用显示成功消息时执行该功能?
事先, 非常感谢你的帮助!
答案 0 :(得分:0)
javascript区域有其用途,但我建议使用动态操作,因为它们可以更清晰地概述页面上发生的情况。
修改您的页眉(页面,编辑),或添加到您的CSS:
<style>
.flash1{
background-color: blue;
}
.flash2{
background-color: yellow;
}
</style>
制作新的动态操作:
事件:页面加载,条件:无
作为真实操作,选择“执行Javascript代码”作为操作
使用jQuery获取对象并在类之间切换。它更清洁
因为你没有在javascript中混合使用css / style。
var $smsg = $(".uMessageText"), flash;
$smsg.addClass('flash1');
if($smsg.length){
flash = setInterval(function(){
$smsg.toggleClass('flash1');
$smsg.toggleClass('flash2');
}, 1000);
setTimeout(function(){
clearInterval(flash);
}, 10001);
};
这将每秒更改成功消息上的类10 秒。在这10秒后清除间隔。没有 如果未找到成功消息,则将启动间隔 因为jQuery对象将为空(length = 0)。
var $smsg = $(".uMessageText")
这是成功消息元素的选择器,以及此选项 示例是Theme 23中该元素的选择器。请注意 成功消息ID或类取决于您选择的主题和 页面模板,您很可能需要更改它。的 当然,选择器可以是你想要的任何元素。
如果你不熟悉jQuery,我建议你去看看它。它默认包含在apex中(并且apex依赖于它),并且在javascripting时是一个非常强大的工具。 http://jquery.com/
简而言之:按ID:$("#id_attribute_here")
选择元素,按类$(".class_name_here")
选择