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>

新しい動的アクションを作成します:
イベント: ページの読み込み、条件: なし
true アクションとして、アクションとして [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 秒ごとに成功メッセージのクラスが変更されます。この 10 秒後に間隔はクリアされます。jQuery オブジェクトが空 (長さ = 0) になるため、成功メッセージが見つからない場合、間隔は開始されません。

var $smsg = $(".uMessageText")

これは成功メッセージ要素のセレクターであり、この例はテーマ 23 のその要素のセレクターです。成功メッセージ ID またはクラスは、選択したテーマとページ テンプレートによって異なり、変更する必要がある可能性が高いことに注意してください。それ。もちろん、セレクターは任意の要素にすることができます。

jQuery に慣れていない場合は、参照することをお勧めします。これはデフォルトで apex に含まれており (apex はこれに依存しています)、JavaScript を実行する際の非常に強力なツールです。http://jquery.com/

要するに: id:$("#id_attribute_here")で要素を選択し、クラスで選択します$(".class_name_here")

于 2012-08-09T07:31:39.407 に答える