我与JS的那些陈年旧事(二)

DHTML概述

1.DHTML:Dynamic HTML

DHTML不是一门新的技术,而是将已有的HTML、css、JS整合在了一起,实现了通过JS访问元素和css属性。通过JS访问html元素或css属性,使得页面具有动态的变化,从而和用户具有交互的行为。

2.工作原理

(1).在DHTML中,将所有的html元素都使用一个一个的JS对象来表示

(2).通过对象来表示html元素, 通过对象之间的包含关系, 来表示元素之间的层级关系

(3).可以通过调用对象的属性或方法, 来间接改变元素的属性和行为


1.BOM

  • Window对象

代表浏览器中一个打开的窗口

(1).window对象的常用方法
//(1) alert(); -- 定义一个消息对话框
window.alert("哈哈哈");

//(2) confirm(); -- 定义一个确定对话框
var res = window.confirm("您确定要删除该订单吗?");
if(res){
    alert("订单删除成功!");
}else{
    alert("操作已取消!");
}

//(3) setInterval(); -- 定义一个循环定时器,
    //chearInter(); -- 清除定时器
var i = 0;
var timer = setInterval(function(){
    console.log(new Date().getTime());
    i++;
    if(){
     clearInterval(timer);   
    }
},3000);

//setTimeout(); -- 定义一个一次性定时器
setTimeout(function(){
    console.log("Hello...");
},2000);
(2).window对象的常用事件

在JS中获取元素时, 如果获取元素的代码元素被浏览器加载的时机还要早, 此时是获取不到元素的.
这里我们可以等浏览器加载完整个html文档之后, 再执行获取元素的代码, 就一定能够获取到.

<!DOCTYPE html>
<html lang="en">
<head>
    <script>
      /* 在浏览器加载完整个html文档后执行*/
      window.onload = function(){
          //1.获取div元素
          var div = document.getElementById("div1");
          //2.通过div元素获取div中所有内容
          console.log(div.innerHTML);
      }
    </script>
</head>
<body>
    <div id="div1">
        获取div中的所有内容...
    </div>
</body>
</html>

DOM

  • 获取html元素

(1).通过元素的ID获取元素
  • document.getElementById(id值) – 通过元素的ID值获取指定ID的元素 </br>
  • value属性 – 获取或设置元素的value值
/* --通过ID获取并弹出用户名输入框的值
    input    value值就是输入框中的内容
    select   value值就是选中的option的value值option的内容
    textarea value值输入框中的内容
-- */

function demo1(){
    //1.获取用户名输入框元素(input元素)
    var inp = document.getElementById("username");
    //2.获取用户名输入框的value值.
    alert( inp.value );
}
(2).通过元素的name属性获取元素
  • document.getElementsByName(name属性值): 通过元素的name属性值获取指定name的所有元素组成的集合数组
/* --通过name属性获取并弹出密码输入框的值-- */
function demo2(){
    //1.获取密码输入框元素
    var arrInps = document.getElementsByName("password");//集合数组
    var inp = arrInps[0];//密码输入框元素
    //2.通过密码输入框获取其中的值
    alert( inp.value );
}
(3).通过元素名称/标签名称获取元素
  • document.getElementsByTagName(tagName): 通过元素的名称获取指定名称的元素组成的集合数组
/* --通过标签名获取并返回所有input元素的value值-- */
function demo3(){
    //1.获取所有的input元素组成的集合数组
    var arrInps = document.getElementsByTagName("input");
    //2.遍历所有的input元素,并获取其value值
    for(var i=0;i<arrInps.length;i++){
       console.log( arrInps[i].value );
    }
} 
(4).innerHTML,innerText
  • innerHTML:获取或设置元素的所有内容(既包含html元素也包含文本内容)
  • innerText:获取或设置元素的文本内容(仅仅是文本)
function dom(){
    //1.获取p元素
    var p = documnet.getElementById("pid");
    //2.通过p元素获取p元素中的所有内容
    //alert( p.innerHTML );
    //alert( p.innerText );
    //p.innerHTML = "<a href='#'>我是来替换的..</a>";
    p.innerText = "<a href='#'>我是来替换的..</a>";
}
  • 增删改html元素

(1).创建元素、添加元素
  • ==document.createElement(tagName)==:创建一个指定名称元素
  • ==parent.appendChild(child)==:通过父元素调用方法添加子元素
function addNode(){
    //1.创建一个div元素
    var div = document.createElement("div");
    
    var color = ["red","green","blue","cyan"];
    var index = parseInt(Math.random()*4);
    div.style.backgroundColor = color[index];
    div.innerHTML = "我是新来的";
    //2.获取父元素(body)
    var body = document.body;
    //3.通过父元素添加子元素
    body.appendChild(div);
}
(2).删除元素
  • ==parent.removeChild(child)==:通过父元素调用方法删除已有的子元素
/* --删除节点: 删除body中id值为 div_3 的div元素-- */
//parentNode
function deleteNode(){
    //1.获取将要被删除的元素
    var div_3 = document.getElementById("div_3");
    //2.获取body元素
    //var body = document.body;
    var body = div_3.parentNode;

    //3.通过父元素删除子元素
    body.removeChild( div_3 );
}
(3).替换元素
  • ==parent.replaceChild(new, child):== 通过父元素调用方法使用新元素替换已有的子元素
/* --更新节点: 用新节点替换id值为 div_2 的div元素  -- */
function updateNode(){
    //1.创建一个新的div元素
    var newDiv = document.createElement("div");
    newDiv.innerHTML = "我是替换的div...";
    //2.获取要被替换的元素
    var div2 = document.getElementById("div_2");
    //3.获取body元素
    var body = document.body;
    //4.通过父元素调用替换方法
    body.replaceChild(newDiv, div2);
}
(4).克隆/复制元素,插入元素
  • obj.cloneNode();
  • parent.insertBefore(new,chlid);
/* --克隆节点、插入节点到指定元素的前面--*/
function copyNode(){    
     //1.获取div_4元素
     var div = document.getElementById("div_4");
    //2.克隆div_4
    //true/1表示克隆元素全部内容,不写/0表示仅克隆元素
    var div_copy = div.cloneNode(true);
    //3.获取body元素
    var body = document.body;
    //4.获取div_2元素
    var div_2 = document.getElementById("div_2");
    //5.插入到div_2元素前面
    body.insertBefore(div_copy,div_2);
    }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容