1

想知道如何在 js 脚本中添加另外三个 !== 或语句。jsfriend00 提供了以下脚本作为一个壮观的答案,但问题是我犯了一个错误,没有提到还有三个文本区域下落不明。我在剩余的或 !== 条件下坚持使用 javascript。在以下脚本中,如何对以下每个 var obj 说 !==?

//查看管理员和客户之间的私有网络流的文件:

 <?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))

我在布拉德的帖子之后尝试了以下内容,该帖子部分有效,但在前两个之后的任何更新或回复以及以下 js 都呈现为无效,这确实令人困惑:

    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 回答