通过HTML DOM,可访问JavaScript HTML文档的所有元素。下面本篇文章就来给大家介绍一下,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
![JavaScript の DOM について詳しく見る](https://img.php.cn/upload/article/000/000/024/5dde4c9c711c6884.jpg)
DOM能干啥?
● JavaScript 能够改变页面中的所有 HTML 元素
● JavaScript 能够改变页面中的所有 HTML 属性
● JavaScript 能够改变页面中的所有 CSS 样式
● JavaScript 能够对页面中的所有事件做出反应
【相关课程推荐:JavaScript视频教程】
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
HTML DOM 模型被构造为对象的树:
![1574849601378153.png JavaScript の DOM について詳しく見る](https://img.php.cn/upload/image/740/508/248/1574849601378153.png)
查找元素方法:
1、直接查找:
● getElementByid(): 通过 id 找到 HTML 元素
● getElementsByTagName(): 通过标签名找到 HTML 元素(列表)
● getElementsByClassName(): 通过类名找到 HTML 元素(列表)
● getelementsByName(): 通过name属性找到HTML元素(列表)
2、间接查找:
1 2 3 4 5 6 7 8 9 10 11 12 | parentNode 父节点
childNodes 所有子节点
firstChild 第一个子节点
lastChild 最后一个子节点
nextSibling 下一个兄弟节点
previousSibling 上一个兄弟节点
parentElement 父节点标签元素
children 所有子标签
firstElementChild 第一个子标签元素
lastElementChild 最后一个子标签元素
nextElementtSibling 下一个兄弟标签元素
previousElementSibling 上一个兄弟标签元素
|
ログイン後にコピー
3、添加删除节点和元素:
操作方法:
1 2 3 4 5 | innerText 文本,指定ID下所有文本的拼接,去除间隔的HTML元素
outerText 写模式下,替换所有子元素
innerHTML 会根据指定的值创建新的 DOM 树,然后用这个 DOM 树完全替换调用元素原先的所有子节点。
outerHTML 写模式下,新的元素替换原有的 DOM 树
value 属性可设置或返回密码域的默认值。获取文本框的值。
|
ログイン後にコピー
Class属性操作(CSS样式表名):
1 2 3 | className 获取所有类名
classList.remove(cls) 删除指定类
classList.add(cls) 添加类
|
ログイン後にコピー
checkbox属性:
1 | checkbox.checked:true选中,false不选
|
ログイン後にコピー
tag标签操作:
1、createElement()创建标签:
每个HTML标签都有自己的属性,属性参照:https://www.w3school.com.cn/jsref/dom_obj_anchor.asp
1 2 3 4 5 6 7 8 | function append_tag(){
var a = document.createElement('a')
var cur = document.getElementById('dd')
a.innerHTML='click me'
a.href='http:
a.className='a1'
cur.appendChild(a)
var a_tag= "<a class='a1' href='>click me</a>"
|
ログイン後にコピー
2、操作标签:
insertAdjacentText('位置',obj) 在指定的地方插入文本内容,如果是HTML对象会以文本形式显示出来
insertAdjacentHTML('位置',obj) 在指定的地方插入html内容
位置说明:
1 2 3 4 | beforeBegin:标签起始位置前(标签前)
afterBegin:标签起始位置后(标签内)
beforeEnd:标签结束位置前(标签内)
afterEnd: 标签结束位置后(标签外)
|
ログイン後にコピー
3、标签样式操作style:
1 2 3 | var obj = document.getElementById('i1')
obj.style.fontSize = "32px" ;
obj.style.backgroundColor = "red" ;
|
ログイン後にコピー
4、位置操作
1 2 3 4 5 6 | document.documentElement.offsetHeight 总文档高度
document.documentElement.clientHeight 当前文档占屏幕高度
tag.offsetHeight 自身高度
tag.offsetTop 距离上级定位高度
tag.offsetParent 父定位标签
tag.scrollTop 滚动高度
|
ログイン後にコピー
事件:
addEventListener() 方法用于向指定元素添加事件句柄。
addEventListener() 方法添加的事件句柄不会覆盖已存在的事件句柄。
你可以向一个元素添加多个事件句柄。
你可以向同个元素添加多个同类型的事件句柄,如:两个 "click" 事件。
你可以向任何 DOM 对象添加事件监听,不仅仅是 HTML 元素。如: window 对象。
addEventListener() 方法可以更简单的控制事件(冒泡与捕获)。
当你使用 addEventListener() 方法时, JavaScript 从 HTML 标记中分离开来,可读性更强, 在没有控制HTML标记时也可以添加事件监听。
你可以使用 removeEventListener() 方法来移除事件的监听。
语法:
1 | element.addEventListener(event, function , useCapture);
|
ログイン後にコピー
事件类型:
#onerrorドキュメントまたは画像の読み込み中にエラーが発生しました。 onmouseupマウス ボタンが放されました。 #onfocusonkeydownonkeypressonkeyuponunload#
键盘鼠标事件:
プロパティ
| このイベントが発生した時期... | プロパティ | このイベントが発生した時期.. . |
---|
onbort | 画像の読み込みが中断されました。 | onload | ページまたは画像がロードされます。 |
onblur | 要素はフォーカスを失います。 | onmousedown | マウス ボタンが押されました。 |
onchange | フィールドの内容が変更されます。 | onmousemove | マウスが移動されました。 |
onclick | ユーザーがオブジェクトをクリックしたときに呼び出されるイベント ハンドラー。 | onmouseout | マウスが要素から遠ざかります。 |
ondblclick | ユーザーがオブジェクトをダブルクリックしたときに呼び出されるイベント ハンドラー。 | onmouseover | マウスを要素の上に移動します。 |
| | | |
要素がフォーカスを取得します。 | onreset | リセットボタンがクリックされました。 | |
キーボードの特定のキーが押されました。 | onresize | ウィンドウまたはフレームのサイズが変更されました。 | |
キーボードのキーが押されて放されます。 | onselect | テキストが選択されています。 | |
キーボードの特定のキーが離されました。 | onsubmit | 確認ボタンがクリックされました。 | |
ユーザーがページを終了します。 | |
|
|
属性 | 描述 |
---|
altKey | 返回当事件被触发时,"ALT" 是否被按下。 |
button | 返回当事件被触发时,哪个鼠标按钮被点击。 |
clientX | 返回当事件被触发时,鼠标指针的水平坐标。 |
clientY | 返回当事件被触发时,鼠标指针的垂直坐标。 |
ctrlKey | 返回当事件被触发时,"CTRL" 键是否被按下。 |
metaKey | 返回当事件被触发时,"meta" 键是否被按下。 |
relatedTarget | 返回与事件的目标节点相关的节点。 |
screenX | 返回当某个事件被触发时,鼠标指针的水平坐标。 |
screenY | 返回当某个事件被触发时,鼠标指针的垂直坐标。 |
shiftKey | 返回当事件被触发时,"SHIFT" 键是否被按下。 |
小例子:
1、文本框默认文字
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <input id= "i1" type= "text" onfocus= "foucs(this)" onblur= "blurs(this)" value= "请输入关键字" />
<script>
function foucs(th){
var v=th.value;
if (v=='请输入关键字'){
th.value='';
}
}
function blurs(th){
var v=th.value;
if (v.length==0){
th.value='请输入关键字';
th.style.color= "gray" ;
th.style.border= "1px solid red" ;
}
}</script>
|
ログイン後にコピー
2、添加标签
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <div style= "border: 1px solid red;" id= "std" ></div>
function b_b(){
var std=document.getElementById('std');
var new_b= "<input type='button' value='我是beforeBegin,在DIV前' />" ;
std.insertAdjacentHTML('beforeBegin',new_b);}
function a_b(){
var std=document.getElementById('std');
var new_b= "<input type='button' value='我是afterBegin,在DIV内前' />" ;
std.insertAdjacentHTML('afterBegin',new_b);}
function b_e(){
var std=document.getElementById('std');
var new_b= "<input type='button' value='我是beforeEnd,在DIV后' />" ;
std.insertAdjacentHTML('beforeEnd',new_b);}
function a_e(){
var std=document.getElementById('std');
var new_b= "<input type='button' value='我是afterEnd,在DIV内后'/>" ;
std.insertAdjacentHTML('afterEnd',new_b);}
|
ログイン後にコピー
3、展开同时隐藏其它子菜单:
HTML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <div id= "left_menu" class = "left_menu" >
<div id='m1' class = "main_menu" onclick= "show_sub_menu(this)" ><span>人员管理</span></div>
<div id='sm1' class = "sub_menu" >
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>
</div>
<div id='m2' class = "main_menu" onclick= "show_sub_menu(this)" ><span>组别管理</span></div>
<div id='sm2' class = "sub_menu" >
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>
</div></div>
|
ログイン後にコピー
js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function show_sub_menu(th){
var parentId = th.id;
var childId='s'+parentId;
var childE=document.getElementById('left_menu').children;
for ( var s in childE){
var e=childE[s].classList;
console.log(e);
if (e){
if (childE[s].id==childId){
childE[s].classList.add('show');
} else {
childE[s].classList.remove('show');
}
}
}}
|
ログイン後にコピー
4、标签提交:
1 2 3 4 5 6 | <!-- DOM提交标单!--><form id= "f1" action= "search.html" >
<input id= "input1" type= "text" />
<a onclick= "a_submit()" >提交吧</a></form><script>
function a_submit(){
document.getElementById('f1').submit();
}</script>
|
ログイン後にコピー
5、html、css、js页面分离:生产环境的写法。
每类存储为单独的文件,其中js使用dom添加事件方法,可以html更简洁。
例子:鼠标移动表格行变色
HTML:
1 2 3 4 5 6 | <table id='tb'>
<tr><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td></tr>
<tr><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td></tr>
<tr><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td></tr>
<tr><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td></tr>
<tr><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td></tr></table>
|
ログイン後にコピー
JS:给table添加属性和class
1 2 3 4 5 6 7 8 9 | var t=document.getElementById('tb').classList;
t.add('tb_style');
var mytrs=document.getElementsByTagName('tr');
var td_numbers=mytrs.length;
for ( var td=0;td<td_numbers;td++){
mytrs[td].onmouseover= function (){this.style.backgroundColor='red';};
mytrs[td].onmouseout= function (){this.style.backgroundColor='';};
}
|
ログイン後にコピー
css
1 2 | .tb_style{
bacground-color:pink;}
|
ログイン後にコピー
6、词法分析:形参--》函数体内函数,编译时函数体内的函数会分配 内存地址,覆盖形参。
1 2 3 4 5 6 | function cifa(age){
console.log(age); \\ function age
age=22;
console.log(age); \\22
function age(){};
console.log(age); \\22}age(3)
|
ログイン後にコピー
以上がJavaScript の DOM について詳しく見るの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。