第五节(HTML DOM (文档对象模型)事件、节点)
HTML DOM 允许 JavaScript 改变 HTML 元素的内容 改变 HTML 输出流 JavaScript 能够创建动态的 HTML 内容: 在 JavaScript 中,document.write() 可用于直接向 HTML 输出流写内容: document.write(Date()); 改变 HTML 内容 修改 HTML 内容的最简单的方法时使用 innerHTML 属性, 如需改变 HTML 元素的内容 语法 : document.getElementById(id).innerHTML = new HTML ; document.getElementById("p1").innerHTML="New text!"; <div id="test"> <p id="t_one">中山学院</p> <p id="t_two">软件工程</p> </div>
<script type="text/javascript"> // 创建一个新的p标签元素 var p = document.createElement("p"); // 创建文本的节点 var node = document.createTextNode("中山学院"); // 在p元素后边追加文本节点 p.appendChild(node); // 获取test这个元素的对象 var test = document.getElementById("test"); // 向test元素追加新元素 test.appendChild(p); // 删除已经存在的html元素 var t = document.getElementById("test"); var pp = document.getElementById("t_two"); t.removeChild(pp); </script> </body>
<body> <div id="txt" onmouseover="changeBackground();" onmouseout="bak();"></div> <script type="text/javascript"> function changeBackground(){ document.getElementById("txt").style.background = "red"; } function bak(){ document.getElementById("txt").style.background = "#690"; } </script> </body>
HTML DOM 使 JavaScript 有能力对 HTML 事件做出反应 一. 对事件做出反应 我们可以在事件发生时执行 JavaScript,当用户在 HTML 元素上点击时。如需在用户点击某个元素时执行代码,请向一个 HTML 事件属性添加 JavaScript 代码 。 <1> 点击元素时: <p onclick="this.innerHTML='Ming太帅了 ! '">Javascript HTML DOM</p> <2> 从事件处理器调用一个函数: <script> function changetext(id) { id.innerHTML="Ming"; } </script> <p onclick="changetext(this)">点这里</p> <3> HTML 事件属性 : <button onclick="displayDate()">点击这里</button> <4> 使用 HTML DOM 来分配事件 向 button 元素分配 onclick 事件: document.getElementById("myBtn").onclick=function(){displayDate()}; <style type="text/css"> *{margin:0;padding:0;} #txt{width:300px;height:100px;background:#690;margin:120px auto;cursor: pointer;} </style> <body> <div id="txt" onmousedown="an()" onmouseup = "fang()"></div> <script type="text/javascript"> // 首先当点击鼠标按钮时,会触发 onmousedown 事件 function an(){ document.getElementById("txt").style.background = "yellow"; } function fang(){ document.getElementById("txt").style.background = "#690"; } </script> </body>
onload 和 onunload 事件 onload 和 onunload 事件会在用户进入或离开页面时被触发。 onload 事件可用于检测访问者的浏览器类型和浏览器版本,并基于这些信息来加载网页的正确版本。 onload 和 onunload 事件可用于处理 cookie。 例: <body onload="checkCookies()"> onchange 事件 onchange 事件常结合对输入字段的验证来使用。当用户改变输入字段的内容时,会调用函数 例 : 实战 onmouseover 和 onmouseout 事件: 可用于在用户的鼠标移至 HTML 元素上方或移出元素时触发函数 <script type="text/javascript"> function message(){ alert("欢迎您 光临小店 ,我是店小二为您服务 !"); } function bb(){ alert("欢迎下次再来!!"); } </script> </head> <body onunload="bb();"> </body>
click事件 onmousedown, onmouseup 以及 onclick 构成了鼠标点击事件的所有部分。 首先当点击鼠标按钮时,会触发 onmousedown 事件,当释放鼠标按钮时,会触发 onmouseup 事件 最后,当完成鼠标点击时,会触发 onclick 事件 onload onfocus 鼠标事件 <style type="text/css"> *{margin:0;padding:0;} #txt{width:300px;height:100px;background:#690;margin:120px auto;cursor: pointer;} </style> </head> <body> <div id="txt" onmousedown="an()" onmouseup = "fang()"></div> <script type="text/javascript"> // 首先当点击鼠标按钮时,会触发 onmousedown 事件 function an(){ document.getElementById("txt").style.background = "yellow"; } function fang(){ document.getElementById("txt").style.background = "#690"; } </script> </body> ////////////////////////////////////////////////////// <body> 请输入文字:<input type="text" onfocus="myFocus();" id="text"/> <br /><br /> 请输入文字(另一种写法):<input type="text" onfocus="myFocus01(this);"/> <script type="text/javascript"> function myFocus(){ document.getElementById("text").style.background = "red"; } // function myFocus01(t){ t.style.background = "red"; } </script> </body>
click事件 onmousedown, onmouseup 以及 onclick 构成了鼠标点击事件的所有部分。 首先当点击鼠标按钮时,会触发 onmousedown 事件,当释放鼠标按钮时,会触发 onmouseup 事件 最后,当完成鼠标点击时,会触发 onclick 事件 onload onfocus 鼠标事件 <style type="text/css"> *{margin:0;padding:0;} #txt{width:300px;height:100px;background:#690;margin:120px auto;cursor: pointer;} </style> </head> <body> <div id="txt" onmousedown="an()" onmouseup = "fang()"></div> <script type="text/javascript"> // 首先当点击鼠标按钮时,会触发 onmousedown 事件 function an(){ document.getElementById("txt").style.background = "yellow"; } function fang(){ document.getElementById("txt").style.background = "#690"; } </script> </body> ////////////////////////////////////////////////////// <body> 请输入文字:<input type="text" onfocus="myFocus();" id="text"/> <br /><br /> 请输入文字(另一种写法):<input type="text" onfocus="myFocus01(this);"/> <script type="text/javascript"> function myFocus(){ document.getElementById("text").style.background = "red"; } // function myFocus01(t){ t.style.background = "red"; } </script> </body>
<select onchange="myChange(this)"> <option value="0">--请选择月--</option> <option value="1">1月</option> <option value="2">2月</option> <option value="3">3月</option> <option value="4">4月</option> <option value="5">5月</option> </select> <script type="text/javascript"> function myChange(val){ alert(val.value); } </script> </body>
document常用方法 document.write() //动态向页面写入内容 document.createElement(Tag) //创建一个html标签对象 document.getElementById(ID) //获得指定ID值的对象 document.getElementsByName(name) //获得指定name值的对象 document.body.appendChild(oTag) //////////////////获取ID <body> <input type="text" id="username" value="124"/> <div id="tm_div"><span>如何获取div的值呢?innerHTML/innerText<b>我是一个加粗的</b><span></div> <span id="tm_span">如何获取span的值呢?</span> <p id="tm_p">如何获取span的值呢?</p> <a href="javascript:void(0);" id="tm_link">点击我?</a> <script type="text/javascript"> //操作网页上的标签元素就使用document. //什么是document 文档对象模式(Document Object Model)---DOM //写方法和定义的时候严格区分大小写 //id选择器:唯一标识符 //方法:document.getElementById(元素的id)根据id获取对象 //.value只有form元素才有意义 var value = document.getElementById("username").value; //获取div.span等其他元素(p,label,em,span,div,h1-h6 a table td tr) //获取值得方式是:innerText(纯文本)/innerHTML(带有格式的文本) var divText = document.getElementById("username").innerText; alert("innerText的值:"+divText); var divHTML = document.getElementById("username").innerHTML; alert("innerHTML"+divHTML); var divText = document.getElementById("username").outerText; alert("outerText的值:"+divText); var divHTML = document.getElementById("username").outerHTML; alert("outerHTML的值:"+divHTML); </script> </body>
1:<body> <input type="checkbox" name="hobbys" value="爬山">爬山 <input type="checkbox" name="hobbys" value="音乐">音乐 <input type="checkbox" name="hobbys" value="读书">读书 <input type="checkbox" name="hobbys" value="游泳">游泳 <script type="text/javascript"> //document.getElementsByName:只是用含有name元素的标签.如果input var divObj = document.getElementsByName("hobbys"); divObj[2].value = "睡觉"; //value/innerText/innerHTML/outerText/outerHTML </script> </body> ///////////////////////////////////////////////////////////////////////////// 2:: <body> <div class="tm_div">123</div> <div class="tm_div">234</div> <div class="tm_div2">234</div> <script type="text/javascript"> //document.getElementsByName() //document.get(获取) Elements(元素) By(通过) TagName(标签)(tagName)通过 //document.getElementsByTagName(tagName)通过标签名获取当前标签对象,返回数组 var objArr = document.getElementsByTagName("div"); //alert(objArr.length);//输出3 tm_getClass("tm_div","444444444444444"); function tm_getClass(className,html){ var arr = []; for(var i=0;i<objArr.length;i++){ if(objArr[i].getAttribute("class")==className){ arr.push(objArr[i]); } } for(var i=0;i<arr.length;i++){ arr[i].innerHTML = html; } } </script> </body> //////////////////////////////////////////////////////// 3: <body> <input type="text" id="username" username="ming"/> <div id="tm_div"></div> <script type="text/javascript"> /* 1:dom.getAttribute(key);//获取标签元素属性对应属性值 dom.setAttribute(key,value);//为标签元素添加属性和属性值 属性=属性值如:id="tm_div" type="text" name="username" 2:如果是元素自身由w3c提供元素属性是可以直接通过当前dom对象本身获取 如:document.getElementById("username").id document.getElementById("username").type document.getElementById("username").name document.getElementById("username").style */ var inputDom = document.getElementById("username"); var username = inputDom.getAttribute("username"); inputDom.setAttribute("age",20); alert(inputDom.getAttribute("age"));//输出20 </script> </body>