簡體   English   中英

如何讓javascript自動滾動,在HTML做一個滾動條?

[英]How can I make javascript automatically scroll and make a scroll bar in HTML?

我在使我的網站具有滾動條並使其自動滾動時遇到問題。 這是一個簡單的聊天網站,只是一個簡單的項目。

這是網址: https://chat.jchs.repl.co/

你可以用這個 fork 代碼(你必須先創建一個帳戶): https://replit.com/@jchs/chat#html/index.html

如果您想在發表評論之前查看 index.html 代碼:

<html>
  <head>
    <title> Chat </title>
    <meta name = "charset" charset = "utf-8">
    <meta name = "viewport" content = "width=device-width">
    <link rel = "stylesheet" type = "text/css" href = "style.css">
    <script src = "script.js"></script>
    <script src= "socket.io/socket.io.js"></script>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
  </head>
  <body onload = "onload()">
    <div id = "Main">
      <audio id = "Ding" src = "Ding.mp3"> </audio>
      <h1 id = "Title"> Online Chat </h1>
      <div id = "AccessPort">
        <label id = "NameLabel"> Username  </label>
        <input id = "NameInput" type = "text">
        <br><br>
        <label id = "IDLabel"> Chatroom </label>
        <input id = "IDInput" value = "Room1" type = "text">
        <input id = "ConnectButton" class = "Button" type = "submit" value = "Connect" onclick = "Connect()">
      </div>
      <h2 id = "RoomID"> Chatroom : None </h2>
      <div id = "Chat">
        <p id = "Message0" class = "Message"> - </p>
        <p id = "Message1" class = "Message"> - </p>
        <p id = "Message2" class = "Message"> - </p>
        <p id = "Message3" class = "Message"> - </p>
        <p id = "Message4" class = "Message"> - </p>
        <p id = "Message5" class = "Message"> - </p>
        <p id = "Message6" class = "Message"> - </p>
        <p id = "Message7" class = "Message"> - </p>
        <p id = "Message8" class = "Message"> - </p>
        <p id = "Message9" class = "Message"> - </p>
        <label id = "MessageLabel"> Message </label>
        <input id = "ComposedMessage" type = "text">
        <input id = "SendMessage" onclick="Send()" value = "Send" class = "Button" type = "submit">
      </div>
      <br><br>
    </div>
    <p2>No racism, homophobia, or any -isms or -phobias. No impersonating or trying to be someone else. Use common sense. </p2>
    <p id="counter">Users online: <span id="userCount">Loading…</span></p>
    <script type="text/javascript" charset="utf-8">
    $().ready(function (){
      var token = '';
      var pinger = setInterval(function (){
        
        $.ajax({
          cache: false,
          data: {
            token: token,
          },
          timeout: 2500,
          type: 'GET',
          url: 'pinger.php',
          dataType: 'json',
          success: function (data, status, jqXHR){
            $('#userCount').text(data.userCount);
            token = data.token;
          }
        });
        
      }, 3000);
    });
</script>
  </body>
</html>

你的聊天有幾個問題。 讓我們嘗試解決:

首先,您有固定數量的消息。 你的聊天 div 必須開始為空,當你收到一條消息時,你將在消息中添加一個新的 p 標簽。 現在,在您發送多條消息后,您會在“document.getElementById("Message"+i)" 句子中收到錯誤消息。

嘗試將輸入放在聊天消息部分之外:

<div id="Chat" style="overflow-y:scroll;height:200px">
     <p id="Message0" class="Message" style="color: rgb(48, 48, 48);"></p>
     ...
     <p id="Message9" class="Message" style="color: rgb(48, 48, 48);"></p>
</div>
<label id="MessageLabel"> Message </label>
<input id="ComposedMessage" type="text">
<input id="SendMessage" onclick="Send()" value="Send" class="Button" type="submit">

通過這種方式,您可以將 overflow-y:scroll 樣式添加到您的 Chat div。 你需要為你的聊天設置一些固定的高度。 也許 200px、75%、75vh...取決於您的喜好。

您可以使用以下代碼將 go 打到底部:

var chat = document.getElementById('Chat');
chat.scrollTop = chat.scrollHeight;

你可以看到這個頁面來檢查如何設置滾動條的樣式: https://www.w3schools.com/howto/howto_css_custom_scrollbar.asp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM