実用的 Javaソースコード付きスクリプト例 Code

⚡ スマートサマリー

実用的 Code 使用例 Javaスクリプトは、ループ、フォーム検証、イベントを使用して日常的なブラウザタスクを解決する方法を示します。この記事では、九九表生成ツール、完全な登録フォーム検証ツール、ホバーで起動するポップアップ、リアルタイムのデジタル時計、そしてこれらのスクリプトの信頼性を維持するための実践方法を紹介します。

  • ✖️ ネストされたループ: 掛け算表は、外側の行ループと内側の列ループを持つHTML文字列を生成します。
  • 📝 フォーム検証: 並列配列は各入力をそれぞれ固有のエラーコンテナにリンクするため、エラーが発生したフィールドの横にメッセージが表示されます。
  • 📧 メールルール: 送信前に、アットマークと末尾のドットの位置チェックを行い、不正な形式のアドレスを拒否します。
  • 🖱️ イベント処理: addEventListenerは、マークアップ内にスクリプトを配置することなく、要素に動作を付加します。
  • 定期更新: setIntervalは、固定されたスケジュールで関数を繰り返す機能で、ライブクロックの例で使用されている機能です。
  • 🔐 サーバールール: クライアント側のチェックはユーザーエクスペリエンスを向上させるだけであり、すべての値はサーバー側で再度検証されなければなりません。
  • 🧹 現代の実践: 新しいコードでは、document.write と暗黙的なグローバル変数を textContent、let、const に置き換えてください。

Javaソースコード付きスクリプト例 Code

これらで構築するもの Javaスクリプト例

以下の各例は、ビルド手順や外部ライブラリを使用せずに、どのブラウザでも実行できる完全なHTMLページです。これらを合わせると、ほぼすべてのブラウザスクリプトに共通する3つのスキル、すなわちデータからのマークアップ生成、ユーザー入力の検証、イベントへの反応を網羅しています。

例: 概念の実践 使用された主な方法
九九 ネストされたループと文字列の構築 プロンプト、for、while、document.write
フォームの検証 配列、条件、およびDOMの更新 getElementById、indexOf、lastIndexOf、innerHTML
ポップアップメッセージ イベント処理 addEventListener、アラート
Digi長い時計 タイマーと日付の書式設定 setInterval、Date、padStart、textContent

基本的な知識 Javaスクリプト 構文は前提としています。ループがまだよくわからない場合は、以下をお読みください。 ループの使い方 Javaスクリプト 始める前に。

例#1: Javaスクリプトの掛け算表

行数と列数をユーザーに尋ねる簡単な掛け算表を作成します。

解決策:

<html>
<head>
  <title>Multiplication Table</title>
  <script type="text/javascript">
    var rows = prompt("How many rows for your multiplication table?");
    var cols = prompt("How many columns for your multiplication table?");
    if(rows == "" || rows == null)
   		 rows = 10;
    if(cols== "" || cols== null)
   		 cols = 10;
    createTable(rows, cols);
    function createTable(rows, cols)
    {
      var j=1;
      var output = "<table border='1' width='500' cellspacing='0' cellpadding='5'>";
      for(i=1;i<=rows;i++)
      {
    	output = output + "<tr>";
        while(j<=cols)
        {
  		  output = output + "<td>" + i*j + "</td>";
   		  j = j+1;
   		}
   		 output = output + "</tr>";
   		 j = 1;
    }
    output = output + "</table>";
    document.write(output);
    }
  </script>
</head>
<body>
</body>
</html>

出力(3行4列):

1   2   3   4
2   4   6   8
3   6   9  12

Code 説明: 外側の for ループは、反復ごとに 1 つのテーブル行を作成し、内側の while ループはその行に列ごとに 1 つのセルを埋めます。 j 各行の後に1にリセットされるのですが、これは初心者がよく忘れる手順です。このリセットがないと、最初の行にしかセルが含まれなくなってしまいます。

💡ヒント: prompt 関数は常に文字列を返します。 i*j 機能するのは Javaスクリプトは両方のオペランドを乗算用の数値に変換しますが、比較は rows > 5 テキストを比較します。入力をラップします Number() その値が算術演算と比較演算の両方に使用される場合。

例2:JSフォームの例

ユーザーから名、姓、メールアドレス、ユーザーID、パスワード、およびパスワード確認を収集するサンプルフォームプログラムを作成します。すべての入力項目は必須であり、入力されたメールアドレスは正しい形式である必要があります。また、パスワードとパスワード確認のテキストボックスに入力された値は同じである必要があります。検証後、 Javaスクリプトエラーが発生したテキストボックスのすぐ横に、適切なエラーメッセージを赤色で表示する。

ソースコード付きのソリューション Code:

<html>
<head>
  <title>Form Validation</title>
  <script type="text/javascript">
    var divs = new Array();
    divs[0] = "errFirst";
    divs[1] = "errLast";
    divs[2] = "errEmail";
    divs[3] = "errUid";
    divs[4] = "errPassword";
    divs[5] = "errConfirm";
    function validate()
	{
      var inputs = new Array();
      inputs[0] = document.getElementById('first').value;
      inputs[1] = document.getElementById('last').value;
      inputs[2] = document.getElementById('email').value;
      inputs[3] = document.getElementById('uid').value;
      inputs[4] = document.getElementById('password').value;
      inputs[5] = document.getElementById('confirm').value;
      var errors = new Array();
      errors[0] = "<span style='color:red'>Please enter your first name!</span>";
      errors[1] = "<span style='color:red'>Please enter your last name!</span>";
      errors[2] = "<span style='color:red'>Please enter your email!</span>";
      errors[3] = "<span style='color:red'>Please enter your user id!</span>";
      errors[4] = "<span style='color:red'>Please enter your password!</span>";
      errors[5] = "<span style='color:red'>Please confirm your password!</span>";
      for (i in inputs)
      {
        var errMessage = errors[i];
        var div = divs[i];
        if (inputs[i] == "")
        	document.getElementById(div).innerHTML = errMessage;
        else if (i==2)
        {
          var atpos=inputs[i].indexOf("@");
          var dotpos=inputs[i].lastIndexOf(".");
          if (atpos<1 || dotpos<atpos+2 || dotpos+2>=inputs[i].length)
        	document.getElementById('errEmail').innerHTML = "<span style='color: red'>Enter a valid email address!</span>";
          else
        	document.getElementById(div).innerHTML = "OK!";
        }
        else if (i==5)
        {
          var first = document.getElementById('password').value;
          var second = document.getElementById('confirm').value;
          if (second != first)
        	document.getElementById('errConfirm').innerHTML = "<span style='color: red'>Your passwords don't match!</span>";
          else
       		document.getElementById(div).innerHTML = "OK!";
        }
        else
        	document.getElementById(div).innerHTML = "OK!";
       }
     }
        function finalValidate()
        {
          var count = 0;
          for(i=0;i<6;i++)
          {
            var div = divs[i];
            if(document.getElementById(div).innerHTML == "OK!")
            count = count + 1;
          }
          if(count == 6)
          	document.getElementById("errFinal").innerHTML = "All the data you entered is correct!!!";
        }
   </script>
</head>
<body>
	<table id="table1">
      <tr>
        <td>First Name:</td>
        <td><input type="text" id="first" onkeyup="validate();" /></td>
        <td><div id="errFirst"></div></td>
      </tr>
      <tr>
        <td>Last Name:</td>
        <td><input type="text" id="last" onkeyup="validate();"/></td>
        <td><div id="errLast"></div></td>
      </tr>
      <tr>
        <td>Email:</td>
        <td><input type="text" id="email" onkeyup="validate();"/></td>
        <td><div id="errEmail"></div></td>
      </tr>
      <tr>
        <td>User Id:</td>
        <td><input type="text" id="uid" onkeyup="validate();"/></td>
        <td><div id="errUid"></div></td>
      </tr>
      <tr>
        <td>Password:</td>
        <td><input type="password" id="password" onkeyup="validate();"/></td>
        <td><div id="errPassword"></div></td>
      </tr>
      <tr>
        <td>Confirm Password:</td>
        <td><input type="password" id="confirm" onkeyup="validate();"/></td>
        <td><div id="errConfirm"></div></td>
      </tr>
      <tr>
        <td><input type="button" id="create" value="Create" onclick="validate();finalValidate();"/></td>
        <td><div id="errFinal"></div></td>
      </tr>
	</table>
</body>
</html>

期待される動作:

Empty first name        -> Please enter your first name!
Email "ann@site"        -> Enter a valid email address!
Email "ann@site.com"    -> OK!
Passwords differ        -> Your passwords don't match!
All six fields valid    -> All the data you entered is correct!!!

Code 説明: 3つの配列が並列に動作する。 入力 現在の値を保持します。 エラー 一致するメッセージを保持し、 div 各メッセージを表示するコンテナのIDを保持します。したがって、インデックスはフィールド、そのエラーテキスト、および出力場所をリンクします。電子メールブランチは、最初の文字がアットマークではなく、かつアットマークと最後のドットの間に少なくとも2文字の間隔がある場合にのみアドレスを受け入れます。

⚠️ 警告: クライアント側検証はユーザーエクスペリエンスを向上させますが、セキュリティは提供しません。誰でも無効化できます。 JavaスクリプトまたはPOSTリクエストをエンドポイントに直接送信するため、ここに示されているすべてのルールをサーバー側でも繰り返す必要があります。

例3:イベントを使用したポップアップメッセージ

デモ用ウェブページに「ようこそ!!!」というシンプルなメッセージを表示し、ユーザーがそのメッセージにマウスカーソルを合わせると、「私のウェブページへようこそ!!!」というメッセージが表示されたポップアップが表示されるようにしてください。

解決策:

<html>
    <head>
        <title>Event!!!</title>
        <script type="text/javascript">
            function trigger() {
                document.getElementById("hover").addEventListener("mouseover", popup);
                function popup() {
                    alert("Welcome to my WebPage!!!");
                }
            }
        </script>
        <style>
            p{
                font-size: 50px;
                position: fixed;
                left: 550px;
                top: 300px;
            }
        </style>
    </head>
    <body onload="trigger();">
        <p id="hover">Welcome!!!</p>
    </body>
</html>

期待される動作:

Page loads      -> the text "Welcome!!!" appears in large type
Mouse hovers    -> an alert box shows "Welcome to my WebPage!!!"

Code 説明: リスナーは、本文のonloadイベントで実行されるトリガー関数内にアタッチされます。headタグの解析中はIDが「hover」の段落が存在しないため、読み込みを待つことが重要です。スクリプトを閉じるbodyタグの直前に配置するか、defer属性を追加することで、より簡潔に同じ結果が得られます。

例4:ライブ DigisetIntervalを使用したtalクロック

ページに現在時刻を表示し、1秒ごとに更新します。この例ではタイマーを紹介し、document.write の現代的な代替手段を示します。

<html>
<head>
    <title>Digital Clock</title>
</head>
<body>
    <h2 id="clock">--:--:--</h2>

    <script>
        function showTime() {
            const now = new Date();
            const hh = String(now.getHours()).padStart(2, "0");
            const mm = String(now.getMinutes()).padStart(2, "0");
            const ss = String(now.getSeconds()).padStart(2, "0");

            // textContent is safer than innerHTML for plain text
            document.getElementById("clock").textContent = hh + ":" + mm + ":" + ss;
        }

        showTime();                 // draw immediately
        setInterval(showTime, 1000); // then refresh every second
    </script>
</body>
</html>

期待される動作:

09:05:07
09:05:08
09:05:09   (the heading updates in place once per second)

setIntervalの前にshowTimeを一度呼び出すことで、ページを開いたときに発生する1秒間の遅延を回避できます。時計を停止する必要がある場合は、setIntervalが返す値を使ってclearIntervalを使用してください。

これらを書くためのベストプラクティス Javaスクリプト例

オリジナルの3つの例は、より古い様式の Java脚本。以下のリストは、制作作業用に脚本を翻案する際に変更すべき箇所を示しています。

  1. document.write を置き換えます: ページ読み込み後に呼び出すと、ドキュメント全体が消去されます。代わりに、要素を作成してtextContentを設定するか、ノードを追加してください。
  2. すべての変数を宣言してください。 カウンターなどの暗黙的なグローバル変数に頼るのではなく、let と const を使用してください。 i 上記のループ内で。
  3. innerHTML より textContent を優先します。 innerHTMLを使用してユーザーが入力したテキストを挿入すると、クロスサイトスクリプティングの脆弱性が生じる。
  4. ハンドラーをマークアップの外に移動する: onkeyup属性とonclick属性をaddEventListenerに置き換えることで、動作と構造を分離できます。
  5. プロンプト入力を変換します: prompt は常に文字列を返すため、比較に使用する前に値を Number() で囲んでください。
  6. サーバー上で再度検証してください。 ブラウザのチェックは、あくまで利便性を高めるための手段としてのみ扱うべきです。

これらの例をさらに詳しく見ていくには、 Javaスクリプト配列メソッド フォームバリデータで使用される並列配列の場合、 Javaスクリプト文字列 メールの位置チェックについては、 クッキー Javaスクリプト 訪問者が入力した値を記憶する。完成したスクリプトがどこに属するかは、以下を読んで判断してください。 内部と外部 Javaスクリプト.

よくあるご質問

コードを拡張子.htmlのファイルに保存し、任意のブラウザで開いてください。このページに掲載されている4つの例はいずれも、サーバー、コンパイラ、ライブラリを必要としません。

whileループは、jが列数を超えると停止します。jを1にリセットしないと、最初の行以降はセルが全く生成されません。

いいえ。即時フィードバックを提供することでユーザーエクスペリエンスを向上させるだけです。リクエストはブラウザを完全に迂回できるため、サーバーはデータを保存する前に同じルールを適用する必要があります。

マウスオーバーは、ポインターが子要素に移動したときに再度発生しますが、マウスエンターは要素自体に対して一度だけ発生します。繰り返しトリガーが不要な場合は、マウスエンターを選択してください。

AIは最初の草稿作成には役立ちますが、生成されたコードにはエスケープされていない入力を含むinnerHTMLが頻繁に使用されています。公開する前にすべての行を読み、安全でないDOM書き込みを置き換えてください。

はい、コードと一緒に正確なコンソールエラーを貼り付けていただければ可能です。要素が存在する前にスクリプトが実行されているといったタイミングエラーは、アシスタントにとって最も簡単に特定できるものの1つです。