1

js スクリプトにさらに 3 つの !== またはステートメントを追加する方法を考えています。次のスクリプトは、jsfriend00 による見事な回答として提供されましたが、問題は、説明されていないテキストエリアがさらに 3 つあることに言及しなかったという間違いを犯したことです。残りの条件または !== 条件で JavaScript を使用しています。次のスクリプトでは、次の var obj のそれぞれに !== と言う方法を教えてください。

// 管理者と顧客の間のプライベート ネットワーク ストリームの VIEW FILE:

 <?php if(!defined('BASEPATH')) exit('No direct script access allowed'); ?>

 <html>
 <title>Chat</title>
 <head>

 <?php echo smiley_js(); ?>

 </head>
 <body>

 <?php echo form_open('controller/function');?>
 Reload chat<?php echo form_submit('reload','reload chat');?>
 <?php echo form_close();?>


 <?php if(isset($user_query)): foreach($user_query->result() as $row):?>

 <p>Created at: <?php echo $row->created_at; ?> </p> 

 <p>Updated at: <?php echo $row->updated_at; ?> </p> 

 <p><label for="update"> <?php echo $username_sess.'&nbsp;said'?>:<span class="optional"></span></label>  

  <textarea name="update" id="update" rows="7" cols="30"><?php echo $row->clt_rep_stream ?></textarea>


  <?php echo form_open('controller/function');?>

  <?php echo form_hidden('user_id',$row->user_id) ?>

  <p><label for="adm_update">reply to client:<span class="optional"></span></label>                                
  <textarea name="adm_update" id="adm_update" rows="7" cols="30"> </textarea>
  <?php echo form_error('adm_update'); ?>
   </p>
   <?php echo form_submit('submit','reply');?>

   <?php echo form_close();?>


   <?php echo form_open('controller/function'); ?>

   <?php echo form_hidden('user_id',$row->user_id) ?>

   <p>Replied at: <?php echo $row->adm_created_at; ?> </p> 

   <p>Updated at: <?php echo $row->adm_updated_at; ?> </p> 

   <p><label for="reupdate"> <?php echo $username_adm_sess.'&nbsp;replied:'?><span class="optional"></span></label>  

   <textarea name="reupdate" id="reupdate" rows="7" cols="30"><?php echo $row->adm_rep_stream ?> </textarea>
   <p>                             
   <?php echo form_submit( 'submit', 'update reply'); ?>
   </p>

  <?php echo form_close(); ?>

  <?php endforeach; ?>

  <?php endif; ?>

   <script>
   function autoRefresh(refreshPeriod) {
   var obj = document.getElementById("create"); 
   var obj_two = document.getElementById("update"); 
   var obj_three = document.getElementById("delete"); 
   var obj_four = document.getElementById("reload"); 

   function refreshIfSafe() {
   if (document.activeElement !== obj) { 
    window.location.reload();
  } else {
    setTimeout(refreshIfSafe, refreshPeriod);
   }
 }
    setTimeout(refreshIfSafe, refreshPeriod);
 }

   autoRefresh(2 * 1000);

   </script>

   </body>
   </html>

次のことを試しましたが、うまくいきませんでした:

    if(document.activeElement !==(obj || obj_two))

部分的に機能したブラッドの投稿の後に次のことを試しましたが、最初の2つ以降の更新または返信と次のjsがnullとvoidにレンダリングされ、本当に混乱しています:

    if(document.activeElement !== obj && document.activeElement !== obj_two)
4

3 に答える 3

2

それぞれの条件は別です。そのように扱ってください。

(document.activeElement !== obj) && (document.activeElement !== obj_two) && ...

要素が明示的に呼び出されていない場合は、ループでこれを行うこともできますが、実際のコードがどのように見えるかがわからないため、これがコードにどのように適合するかはわかりません。

于 2012-09-17T00:12:25.300 に答える
0

テストされていませんが、動作するはずです:

<script>
  function autoRefresh(refreshPeriod) {
    var elementArray = [
      document.getElementById("create"),
      document.getElementById("update"),
      document.getElementById("delete"),
      document.getElementById("reload")
    ];

    function refreshIfSafe() {
      if (elementArray.indexOf(document.activeElement) !== -1) {
        window.location.reload();
      } else {
        setTimeout(refreshIfSafe, refreshPeriod);
      }
    }
    setTimeout(refreshIfSafe, refreshPeriod);
  }

  autoRefresh(2 * 1000);
</script>

または

<script>
  function autoRefresh(refreshPeriod) {
    var elementArray = ["create", "update", "delete", "reload"];    

    function refreshIfSafe() {
      if (document.activeElement && elementArray.indexOf(document.activeElement.id) !== -1) {
        window.location.reload();
      } else {
        setTimeout(refreshIfSafe, refreshPeriod);
      }
    }
    setTimeout(refreshIfSafe, refreshPeriod);
  }

  autoRefresh(2 * 1000);
</script>
于 2012-09-17T00:15:22.117 に答える
-2

あなたは試すことができます...いいえ、しないでください!

if(!(document.activeElement in [obj,obj_two])){
    // ...
}

ちなみに、オブジェクトを比較するときは、実際にはそれらの参照アドレスをメモリ上で比較するので、'!=' で十分です。

于 2012-09-17T00:19:14.610 に答える