目次
1.2回入力したパスワードがJSの実装と一致しているかどうかを判断します
2.拡張:JS AJAXテクノロジーを使用して、登録時にユーザー名が一意であるかどうかを判断します
JavaScriptの概要:
JavaScript(略して「JS」)は、軽量で、インタプリタされた、またはジャストインタイムでコンパイルされたプログラミング言語であり、最初に関数を使用します。Webページを開発するためのスクリプト言語として有名ですが、ブラウザ以外の多くの環境でも使用されています。JavaScriptは、プロトタイププログラミング、マルチパラダイム動的スクリプト言語に基づいており、オブジェクト指向、必須、宣言型(Such関数型プログラミングとして)スタイル。
JavaScriptは、1995年にNetscapeのBrendanEichによってNetscapeNavigatorブラウザで最初に設計および実装されました。NetscapeはSunと協力していたため、Netscapeの管理者はJavaのように見せたかったので、JavaScriptと名付けられました。しかし実際には、その文法スタイルは自己とスキームに近いです。
JavaScriptの標準はECMAScriptです。2012年の時点で、すべてのブラウザーはECMAScript 5.1を完全にサポートしており、古いブラウザーは少なくともECMAScript3標準をサポートしています。2015年6月17日、ECMAInternationalはECMAScriptの第6版をリリースしました。正式名称はECMAScript2015ですが、通常はECMAScript6またはES6と呼ばれます。
JS
JSの動作環境はブラウザです
JSはあなただけが考えられないことをすることができます、それができないことは何もありません
(Chromeブラウザ業界標準)
フロントエンドのセキュリティ
解釈される言語
ページが更新されるたびに、JSコードは
上から下に順番に実行され
ます。JSスクリプトに直接アクセスすると、プレーンテキストのコンテンツが返されます
。JSは大文字と小文字を区別します。
クイックスタート
JSはHTMLと混在させることが
でき、HTMLのどこにでも表示できます
単文
出力ステートメント
alert(); //ポップアップ
console.log(); //コンソールに出力
HTMLでJSコードを導入する方法
内部JS:<script> </ script>
<script src =“ ./ js / test1.js”> </ script>
<script src =“ http://localhost/JS/js/test1.js”> </ script>
<script src =“ http:/ /172.168.23.63/JS/js/test1.js”> </ script>
jsのスクリプトは、外部から導入することができる 。<スクリプト タイプ= "テキスト/ JavaScriptを" SRC = "はvendors.47ee6caee3579c652820.js" 誠実= "SHA512-D2n5DNLLXR1Pg0RECW6VRkt2hStlq9lyb52AiW1vAXQbklC0SFw0wBvQ9K2lldtGDWyit3AakyxPWHdXieKQIQ ==" </ SCRIPT> crossOrigin = "匿名">を
101JS:type = "text / javascript"
変数
変数を宣言する
varを宣言することを強くお勧めし
ます。varを使用して宣言できるのは1回だけです(同じ変数を繰り返し割り当てることができます)。
var name = "ワッフル";
var a = 1;
可変型
数
は4つの算術を行うことができます
文字列とブール値
null和未定義
Nullは、0とは異なる「空の」値を表し、空の文字列「0は数値です」は、長さが0の文字列を表し、nullは「空の」を表します。
他の言語では、Javascriptと同様のnullの表現もあります。たとえば、Javaもnullを使用し、Swiftはnilを使用し、PythonはNoneを使用します。
ただし、Javascriptには、「未定義」を意味するnullに似た別の未定義があります。
Javascriptの設計者は、nullを使用して空の値を示し、値が未定義であることを示すためにアンダーファインドを使用したいと考えていました。事実はこれが役に立たないことを証明しており、2つを区別することはほとんど意味がありません。ほとんどの場合、nullを使用する必要があります。undefinedは、関数パラメーターが渡されたかどうかを判断する場合にのみ役立ちます。
アレイ
配列には、任意のデータ型を含めることができます
var arr = [1,2,3.14、 "GGG"]
配列
arr [0]を呼び出します
オブジェクト
JavaScriptオブジェクトは、キー値で構成される順序付けられていないコレクションのセットです。
配列を定義するときは角かっこを使用し、オブジェクトを定義するときは中かっこを使用します。
var person = { name: 'Bob'、 age:20、 tags:['js'、 'web']、 city: 'beijing'、 hasCar:true }
オブジェクトを呼び出す
person.name
プロセス制御
ifステートメントの判断
var age = 15;
if (age >= 18){
alert('adult');
}else{
alert('teenager');
}
forループ
var x = 0;
var i;
for(i=1; i<=10000; i++){
x = x + i;
}
x;//50005000
のために...で
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
console.log(key);
}
//'name', 'age', 'city'
whileループ
var x = 0;
var n = 99;
while (n > 0) {
x = x + n;
n = n - 2;
}
x;//2500
一方を行います
var n = 0;
do {
n = n + 1;
}while (n < 100);
n;//100
関数
関数を定義することの利点は簡単に呼び出すことができます
定義関数関数abs(){} absは、数値の絶対値を計算するためのものです。
関数abs(-1);を呼び出します。
オブジェクト
オブジェクトを介してブラウザをナビゲートする
ブラウザの組み込みオブジェクト
ブラウザの組み込みオブジェクト:
ウィンドウはブラウザをグローバルに表します
通常、ウィンドウは省略されて直接書き込まれます。ウィンドウはドメイン名のルートに相当し、デフォルトで省略できます。
オブジェクトのプロパティにアクセスするには、いくつかのポイントを使用する必要があります。
ナビゲーター
ブラウザ関連情報
FirefoxはNetscapeが所有しています
画面
画面情報
ロケーション
現在のページのURL情報を取得します
ドキュメントは非常に重要です
現在のインターフェースを表します
document.cookie(重要)
クッキー情報の読み取りと書き込みを完了できます
alert(document.cookie);
document.cookie = "name = hello";
テスト:
リフレッシュ後
ユーザー名は直接変更されます
ドキュメントオブジェクトモデル(DOM)
DOMを操作する
DOMノード
HTMLドキュメントはブラウザで解析された後のDOMツリーであるため、HTMLの構造を変更するには、Javascriptを使用してDOMを操作する必要があります。
オペレーティング:
更新:DOMノードのコンテンツを更新します。これは、DOMノードによって表されるHTMLコンテンツを更新することと同じです。
トラバース:DOMノードの下に新しく追加された子ノードをトラバースしてさらに操作します
追加:DOMノードの下に子ノードを追加します。これは、HTMLノードを動的に追加するのと同じです。
削除:HTMLからノードを削除します。これは、DOMノードとそれに含まれるすべてのサブセクションのコンテンツを削除することと同じです。
DOMノードを操作する前に、さまざまな方法でDOMノードを取得する必要があります
DOMノードを取得する最も一般的な方法
document.getElementById()
document.getElementsByTagName()
document.getElementsByClassName()// CSSセレクター
IDはHTMLドキュメント内で一意であるため、document.getElementById()は唯一のDOMノードを直接見つけることができますdocument.getElementsByTagName()およびdocument.getElementsByClassName()はDOMノードのグループを返します。DOMを正確に選択するために、それを見つけることができます。最初に親ノード、次に親ノードから選択してスコープを絞り込みます。
// IDが「test」のノードを返します。
var teest = document.getElementById( 'test');
//最初にIDが「test-table」であるノードを見つけてから、その中のすべてのtrノードを返します:
var trs = document.getElementById( 'test-table')。document.getElementsByTagName( 'tr');
//最初にIDが「test-div」であるノードを見つけ、次にその中のすべてのクラスに含まれる赤いノードを返します。
var reds = document.getElementById( 'test-div')。document.getElementsByClassName( 'red');
//ノード「test」の下にあるすべての直接の子ノードを取得します。
var cs = test.children;
//ノードテストで最初と2番目の子ノードを取得します。
var first = test.firstElementChild;
var last = test.lastElementChile;
2番目の方法
querySelector()とquerySelectAll()を使用するには、select構文を理解してから、条件を使用してノードを取得する必要があります。これはより便利です。
// querySelectorを介してIDq1のノードを取得します。
var q1 = document.querySelector( '#q1');
// querySelectorAllを使用して、q1ノード内のすべての適格なノードを取得します。
var ps = q1.querySelectorAll( 'div.highlighted> p');
注:IE <8の下位バージョンは、querySelectorおよびquerySelectorAllをサポートしていません。IE8は制限付きのみをサポートしています。
厳密に言えば、ここでのDOMノードはElementを指しますが、DOMノードは実際にはNodeです。HTMLでは、NodeにはElement、Comment、CDATA_SECTIONなど、およびルートノードのDocumentタイプが含まれますが、ほとんどの場合、気にするのは要素。これは実際にページ構造を制御するノードであり、他のタイプのノードを無視します。ルートノードDocumentは、グローバル変数documentに自動的にバインドされています。
イベント
ユーザートリガーイベント
マウスイベント
onclick(マウスクリック)、dbclick(マウスダブルクリック)など。
キーボードイベント
フォームイベント
インシデント対応
1.2回入力したパスワードがJSの実装と一致しているかどうかを判断します
成し遂げる:
<script>
function fm(){ var ps1 = document.getElementById( 'pas1'); var ps2 = document.getElementById( 'pas2'); if(ps1.value!= ps2.value){ alert( "Twice password The入力に一貫性がありません。再入力してください "); ps1.value =" "; ps2.value =" "; } } </ script>
別の応答イベントを作成する
<input type = "submit"οnmοuseοver= "fm()" name = "userSubmit" value = "注册">
<html>
<head>
<meta charset="utf-8">
<title>注册--刹那芳华</title>
</head>
<body>
<h1>刹那芳华BBS 论坛</h1>
<form
action="./addUser.php"
method="POST"
>
用户名:<input id="user" type="text" name="userName"><br />
密码:<input id="pas1" type="password" name="userPass1"><br />
确认密码:<input id="pas2" type="password" name="userPass2"><br />
<script>
function fm(){
var ps1=document.getElementById('pas1');
var ps2=document.getElementById('pas2');
if(ps1.value != ps2.value){
alert("两次密码输入不一致,请重新输入");
ps1.value="";
ps2.value="";
}
}
</script>
<input type="submit" onmouseover="fm()" name="userSubmit" value="注册">
</form>
<hr />
</body>
</html>
パスワードを入力した後、マウスカーソルが登録ボタンに移動すると、
マウス応答イベントが発生し、JSが実行されて、入力された2つのパスワードが一貫しているかどうかが判別されます。
一貫性がない場合は、パスワードが2回間違って入力され、クリアされたことをユーザーに通知するボックスがポップアップ表示されます
テスト:
2.拡張:JS AJAXテクノロジーを使用して、登録時にユーザー名が一意であるかどうかを判断します
AJAX
xmlhttp = new XMLHttpRequest(); XMLHttpRequestオブジェクトを作成します
サーバーにリクエストを送信します。
xmlhttp.open( "GET"、 "./ getUserName.php?q =" + str、true);
xmlhttp.send();
文字列の形式で応答データを取得するためのresponseText
成し遂げる:
サーバー側の応答ファイル:
getUserName.php
<?php
include "../inc/dblink.inc.php";
?>
<?php
$sql = "SELECT * FROM `users`";
if($results = mysqli_query($link,$sql)){
while($result=mysqli_fetch_assoc($results)){
$a[]=$result['name'];
}
}else{
mysqli_error($link);
}
$q=$_GET["q"];
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<count($a); $i++)
{
if($q === $a[$i]){
$hint=$a[$i];
break;
}
}
}
echo $hint;
?>
<?php
mysqli_close($link);
?>
ユーザーのマウスが入力ボックスを離れたときに応答イベントonmouseoutを作成し、応答イベントをトリガーし、次のJSを呼び出し、サーバーの./getUserName.phpにget要求を送信し、ユーザーが入力した文字列を渡します。
サーバー(getUserName.php)は、データベースからすべてのユーザー名を抽出し、それらを受信文字列と比較して、比較結果を返します。次のJSは、サーバーから返された情報を処理し、ユーザーインターフェイスで応答を取得します。
<script>
function showHint(str)
{ var xmlhttp; if(str.length == 0) { document.getElementById( "user")。innerHTML = ""; 戻る; } xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { if(xmlhttp.responseText){ alert( "用户名已最初、请重新一入!"); } //document.getElementById("user").innerHTML=xmlhttp.responseText; } } xmlhttp.open( "GET"、 "./ getUserName.php?q =" + str、true); xmlhttp.send();
register.php
<html>
<head>
<meta charset="utf-8">
<title>注册--刹那芳华</title>
</head>
<body>
<h1>刹那芳华BBS 论坛</h1>
<form
action="./addUser.php"
method="POST"
>
<script>
function showHint(str)
{
var xmlhttp;
if (str.length==0)
{
document.getElementById("user").innerHTML="";
return;
}
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
if(xmlhttp.responseText){
alert("用户名已存在,请重新输入!");
}
//document.getElementById("user").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","./getUserName.php?q="+str,true);
xmlhttp.send();
}
</script>
用户名:<input id="user" type="text" name="userName" onkeyup="showHint(this.value)"><br />
密码:<input id="pas1" type="password" name="userPass1"><br />
确认密码:<input id="pas2" type="password" name="userPass2"><br />
<script>
function fm(){
ps1=document.getElementById('pas1');
ps2=document.getElementById('pas2');
if(ps1.value != ps2.value){
alert("两次密码输入不一致,请重新输入");
ps1.value="";
ps2.value="";
}
}
</script>
<input type="submit" onmouseover="fm()" name="userSubmit" value="注册">
</form>
<hr />
</body>
</html>
テスト
まず、データベースに入ってユーザーテーブルを表示します。2人のユーザーがいることがわかります[GGG、テスト]
GGGデータベースにすでに存在するユーザー名を入力すると、エラーが報告されます
データベースに存在しないユーザー名を入力してください、通常
両方の応答イベントは正常に機能します
登録完了
テストは成功しました
詳細については、https://blog.csdn.net/weixin_43252204/article/details/105717411を参照してください。