第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript 'keyup' 和 'keydown' 事件監(jiān)聽器只觸發(fā)一次

JavaScript 'keyup' 和 'keydown' 事件監(jiān)聽器只觸發(fā)一次

白衣非少年 2021-07-02 09:12:03
我是一名 JavaScript 新手程序員 - 這是我在該語言中的第一個項目。我目前正在嘗試運行一個臨時“計時器”,該計時器在按下鍵時觸發(fā)(keydown)并在釋放鍵時結(jié)束(keyup)。出于測試目的,我還讓每個函數(shù)在觸發(fā)時打印一個語句。不幸的是,我只能讓事件偵聽器觸發(fā)一次。我希望腳本在用戶按下任意鍵時運行并響應(yīng)輸入。老實說,“計時器”是一個更大項目的占位符——讓 keydown/keyup 事件在用戶每次按下一個鍵時運行是重要的,而不僅僅是在初次按下時。我已經(jīng)嘗試了很多不同的策略,我將在等待回應(yīng)時繼續(xù)研究這個問題。起初,我懷疑這個問題是因為我在加載 html 文檔的頭部部分設(shè)置了 JavaScript,但將其移動到正文并沒有解決問題。我擔心是因為我不是每次都寫一個新行,但是更改為 document.writeln 并沒有幫助。我已經(jīng)嘗試了幾種簡單的循環(huán)代碼形式但沒有成功 - 我目前正在研究如何使函數(shù)遞歸以查看是否有幫助。我也嘗試將代碼加載到 jquery 中,但無濟于事(JQuery 甚至沒有觸發(fā)一次)。根據(jù)我對鍵盤記錄所做的研究,我還對 window.setInterval 之類的東西做了一些工作,但我沒有// The initial script<!DOCTYPE html><html>  <head>    <script type="text/javascript">    var start, finish, diff;    // Adds event listeners    document.addEventListener('keydown',startTimer);    document.addEventListener('keyup',endTimer);    // Runs on keydown, simply stores a new date    function startTimer(e){        start = new Date();    }    // Runs on keyup, stores a new date (time in milliseconds since epoch),    // then takes and prints the difference between the two.     function endTimer(e){        finish = new Date();        diff = finish - start;        document.write(diff);    }    </script>  </head>  <body>  </body></html>// "Most stable" version, utilizing onkeyup/onkeydown and writeln<!DOCTYPE html><html>  <head>  </head>  <body>    <script type="text/javascript">    var start, finish, diff;      document.onkeydown = function(e){          start = new Date();          document.writeln(start);      }      document.onkeyup = function(e){          finish = new Date();          diff = finish - start;          document.writeln(finish);          document.writeln(diff);      }    </script>  </body></html>// JQuery version<!DOCTYPE html><html>  <head>  </head>我希望每次按下一個鍵時“網(wǎng)站”都會打印出精確的存儲日期,然后在我釋放它時打印出一個新日期以及兩者之間的差異。相反,當我第一次按下一個鍵時,它會打印出信息,然后無論我做什么都不打印。我會注意到 JQuery 目前甚至沒有打印出第一條消息——我正在做更多關(guān)于為什么的研究——我只做了非常精簡的 JQuery 研究。
查看完整描述

2 回答

?
慕雪6442864

TA貢獻1812條經(jīng)驗 獲得超5個贊

我想你想要這樣的東西。


// The initial script

<!DOCTYPE html>

<html>


 <head>

   <script type="text/javascript">

    var start, finish, diff;


// Adds event listeners

document.addEventListener('keydown',startTimer);

document.addEventListener('keyup',endTimer);


// Runs on keydown, simply stores a new date

function startTimer(e){

    console.log('down', e)

            start = new Date();

        }


        // Runs on keyup, stores a new date (time in milliseconds since 

//  epoch),

        // then takes and prints the difference between the two. 

        function endTimer(e){

      console.log('up', e)

           finish = new Date();

            diff = finish - start;

          console.log('diff', diff)

            document.querySelector('body').innerHTML = (diff);

        } 


   </script>

  </head>


 <body>

 </body>

</html>

問題是當你告訴endTimer寫已經(jīng)過去的時間量時:


document.write(diff)

您正在寫入文檔的根目錄而不是文檔中的元素。一旦被覆蓋,你就沒有一個 DOM 對象可以從中獲取事件。


查看完整回答
反對 回復(fù) 2021-07-08
?
慕容708150

TA貢獻1831條經(jīng)驗 獲得超4個贊

問題在于document.writeln()在事件處理程序中使用。使用console.log(),而不是修復(fù)該問題。


說明:document.write()在頁面加載后使用會清除當前文檔,并用傳遞的任何字符串替換內(nèi)容。學分


var start, finish, diff;


      document.onkeydown = function(e){

          start = new Date();

          console.log(start);

      }


      document.onkeyup = function(e){

          finish = new Date();

          diff = finish - start;

          console.log(finish);

          console.log(diff);

      }

<!--"Most stable" version, utilizing onkeyup/onkeydown and writeln-->

<!DOCTYPE html>

<html>


  <head>


  </head>


  <body>

  </body>

</html>


查看完整回答
反對 回復(fù) 2021-07-08
  • 2 回答
  • 0 關(guān)注
  • 315 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號