在进程成功消息中使用javascript

时间:2012-08-08 20:14:54

标签: oracle-apex

我正在使用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告诉我: 消息:需要对象

我认为我的问题是成功消息区域对象并不总是存在。有没有办法只在我调用显示成功消息时执行该功能?

事先, 非常感谢你的帮助!

1 个答案:

答案 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")选择