1

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

我认为我的问题是成功消息区域对象并不总是存在。只有当我进行调用以显示成功消息时,是否有任何方法可以执行该函数?

提前,非常感谢您的帮助!

4

1 回答 1

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 秒内每秒更改成功消息上的类。间隔在这 1​​0 秒后被清除。如果没有找到成功消息,则不会开始任何间隔,因为 jQuery 对象将为空(长度=0)。

var $smsg = $(".uMessageText")

这是您的成功消息元素的选择器,此示例是主题 23 中该元素的选择器。请注意,成功消息 id 或类取决于您选择的主题和页面模板,您很可能需要更改它。当然,选择器可以是您喜欢的任何元素。

如果你不熟悉 jQuery,我建议你看看它。它默认包含在 apex 中(并且 apex 依赖于它),并且在 javascripting 时是一个非常强大的工具。http://jquery.com/

简而言之:按 id: 选择元素$("#id_attribute_here"),按类选择$(".class_name_here")

于 2012-08-09T07:31:39.407 回答