ノードタイプ
nodeType
次に、いくつかの重要なノードタイプ値を示します:
1: 要素要素
2: 属性 attr
3: テキストテキスト
8: コメント
9: 文書文書
ノード名、ノード値
ノード関係
childNodes: 各ノードには、NodeList オブジェクトを格納する childNodes 属性があります
firstChild: childNodes[0] と同等
lastChild: childNodes.length-1 と同等
同時に、リスト内の各ノードのpreviousSiblingプロパティとnextSiblingプロパティを使用して、同じリスト内の他のノードにアクセスできます。
オペレーションノード
appendChild()
appendChild() メソッドは、childNodes リストの末尾にノードを追加するために使用されます。ノードを追加した後、新しいノード、親ノード、および childNodes の以前の最後の子ノードの関係ポインタがそれに応じて更新されます。
insertBefore()
insertBefore() このメソッドは、挿入されるノードと参照として使用されるノードの 2 つのパラメータを受け入れます。
// 插入后成为最后一个子节点 returnedNode = someNode.insertBefore(newNode,null); // 插入后成为第一个节点 returnedNode = someNode.insertBefore(newNode,someNode.firstChild); // 插入到最后一个子节点前面 returnedNode = someNode.insertBefore(newNode,someNode.lastChild);
repaceChild()
repaceChild() は、挿入されるノードと置換されるノードの 2 つのパラメーターを受け入れます
var returnedNode = someNode.replaceChild(newNode,someNode.firstChild);
removeChild()
ノードを削除するだけであり、交換することはできません。
var formerFirstChild = someNode.removeChild(someNode.firstChild);
cloneNode()
アイテム 1
項目 2
項目 3
var deepList = myList.cloneNode(true); console.log(deepList.length); // 3 var shallowList = myList.cloneNode(false); console.log(shallowList.childNodes.length); //0
ドキュメントタイプ
ドキュメント ノードには次の特性があります:
- nodeType の値は 9;
- nodeName の値は #document;
- nodeValue の値が null です。
- parentNode の値が null です;
- ownerDocument の値が null です;
ドキュメントの子ノード
var html = document.documentElement; // 取得对<html>的引用 console.log(html === document.childNodes[0]); // true console.log(html === document.firstChild); // true
ドキュメント情報
// 取得文档的标题 var originalTitle = document.title; // 设置文档标题 document.title = "New page title"; // 取得完整的url var url = document.URL; // 取得域名 var domain = document.domain; // 取得来源页面的url var referrer = document.referrer; //假设页面来自p2p.wrox.com域 document.domain = "wrox.com"; // 成功 document.domain = "nczonline.net"; // 失败
IE7 で document.getElementById("myElement"); を呼び出すと、次のような
要素が返されます。
最善の方法は、フォームフィールドの name 属性を他の要素の ID と同じにしないことです。
<input type="text" name="myElement" value="text field"> <div id="myElement">a div</div>
スペシャルコレクション
- document.anchors、ドキュメント内の name 属性を持つすべての要素が含まれます。 document.forms には、ドキュメント内のすべてのフォーム要素が含まれます。これは、 document.getElementsByTagName("form");
- によって取得される結果と同じです。 document.images には、ドキュメント内のすべての img 要素が含まれます。これは、 document.getElementsByTagName("img");
- によって取得される結果と同じです。 document.links、ドキュメント内の href 属性を持つすべての a 要素が含まれます。
<html> <head> <title>document.write() Example 3</title> </head> <body> <script type="text/javascript"> document.write("<script type=\"text/javascript\" src=\"file.js\">") + "<\/script>"); </script> </body> </html>文字列 は外部スクリプト タグの終了タグとして使用されないため、ページに冗長なコンテンツはありません。
要素の種類
要素ノードには次の特性があります:
- nodeName の値は要素のタグ名です。
- nodeValue の値が null です。
- parentNode はドキュメントまたは要素である可能性があります。
- 要素のタグ名にアクセスするには、nodeName 属性または tagName 属性を使用できます。
<div id="myDiv"></div> var div = document.getElementById("myDiv"); console.log(div.tagName); // DIV console.log(div.nodeName); // DIV if (element.tagName=="div") { // 不能这样比较,很容易出错 } if (element.tagName.toLowerCase =="div") { // 这样最好(适用于任何文档) }特性を獲得する
属性を操作するための主な DOM メソッドは、getAttribute()、setAttribute()、removeAttribute() の 3 つです。
getAttribute() に渡される属性名は実際の属性名と同じであることに注意してください。 classの属性値を取得したい場合は、「className」ではなく「class」を渡す必要があるようです。
var div = document.getElementById("myDiv"); console.log(div.getAttribute("class")); // bd要素の作成
新しい要素は document.createElement() メソッドを使用して作成できます。
要素の子ノード
通常、次の例に示すように、操作を実行する前に、最初にnodeType 属性を確認する必要があります。
Text类型
Text节点具有以下特征:
- nodeType的值为3;
- nodeName的值为"#text";
- nodeValue的值为节点所包含的文本;
- parentNode是一个Element;
创建文本节点
可以使用document.createTextNode()创建新文本节点。
规范化文本节点
normalize()
分割文本节点
splitText()
Comment类型
comment节点具有下列特征:
- nodeType的值为8;
- nodeName的值为"#comment";
- nodeValue的值是注释的内容;
- parentNode可能是Document或Element;
- 不支持(没有)子几点;
DOM操作技术
操作表格
// 创建 table var table = document.createElement("table"); table.border = 1; table.width = "100%"; // 创建tbody var tbody = document.createElement("tbody"); table.appendChild(tbody); // 创建第一行 tbody.insertRow(0); tbody.rows[0].insertCell(0); tbody.rows[0].cells[0].appendChild(document.createTextNode("cell 1,1")); tbody.rows[0].insertCell(1); tbody.rows[0].cells[1].appendChild(document.createTextNode("cell 2,1")); // 创建第二行 tbody.insertRow(01); tbody.rows[1].insertCell(0); tbody.rows[1].cells[0].appendChild(document.createTextNode("cell 1,2")); tbody.rows[1].insertCell(1); tbody.rows[1].cells[1].appendChild(document.createTextNode("cell 2,2")); document.body.appendChild(table);
选择符API
querySelector()方法
// 取得body元素 var tbody = document.querySelector('body'); // 取得ID为"myDIV"的元素 var myDIV = document.querySelector("#myDiv"); // 取得类为"selected"的第一个元素 var selected = document.querySelector(".selected"); // 取得类为"button"的第一个图像元素 var img = document.body.querySelector("img.button");
querySelectorAll()方法
// 取得某<div>中的所有<em>元素(类似于getElementsByTagName("em")) var ems = document.getElementById("myDiv").querySelectorAll("em"); // 取得类为"selected"的所有元素 var selecteds = document.querySelectorAll(".selected"); // 取得所有<p>元素中的所有<strong>元素 var strongs = document.querySelectorAll("p strong");
HTML5
与类相关的扩充
getElementsByClassName()方法:
该方法可以通过document对象及所有HTML元素调用该方法。
// 取得所有类中包含"username"和"current"的元素。类名的先后顺序无所谓 var allCurrentUsernames = document.getElementsByClassName("username current"); // 取得ID为"myDiv"的元素中带有类名"selected"的所有元素 var selected = document.getElementById("myDiv").getElementsByClassName("selected");
焦点管理
HTML5也添加了辅助管理DOM焦点的功能。首先就是document.activeElement属性,这个属性始终会引用DOM中当前获得了焦点的元素。
var button = document.getElementById("myButton"); button.focus(); alert(document.activeElement === button); // true
默认情况下,文档刚刚加载完成时,document.activeElement中保存的是document.body元素的引用。文档加载期间,docuemnt.activeElement的值为null。
另外就是新增了document.hasFocus()方法,这个方法用于确定文档是否获得了焦点。
var button = document.getElementById("myButton"); botton.focus(); alert(document.hasFocus()); // true

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック



