1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4 <title>Untitled Document</title> 5 6 <script type="text/javascript"> 7 //1. 节点的类型: 元素节点、属性节点、文本节点 8 //通常情况下, 操作属性节点直接通过 "元素节点.属性名" 的方式来读写属性值 9 //而不是获取属性节点. 10 11 //2. 写 JS 代码的位置 12 //2.1 具体位置在哪 13 //2.2 window.onload 事件被触发的时间, 14 //以及如何为该事件赋值一个相应函数 15 16 //3. 获取获取元素节点 17 //3.1 根据 id 获取 18 //3.2 根据 标签名 获取: 该方法并非 document 对象所独有, 任何元素节点 19 //都可以调用该方法, 以获取指定的子节点. 20 //3.3 根据 name 属性名来获取: 若 HTML 元素本身没有 name 属性, 21 //我们硬添加一个 name 属性, 使用 getElementsByName(name) 22 //对于 ie 是不好用的。 23 24 //4. 获取子节点 25 //4.1 childNodes 属性: 获取指定元素的所有子节点, 但不怎么常用. 26 //4.2 firstChild、lastChild 属性: 获取元素节点的文本节点(如果一个元素 27 // 节点只有一个文本子节点). 28 //4.3 使用元素节点的 getElementsByTagName("方法"); 29 30 //5. 读写文本节点: 31 //5.1 文本节点一定是元素节点的子节点 32 //5.2 步骤: 获取文本节点所在的元素节点 -> 利用 firstChild 获取文本节点 33 // -> 利用节点的 nodeValue 属性来读写文本值. 34 35 //6. 节点的属性: 所有节点都有的属性(按元素节点, 属性节点, 文本节点来说明) 36 //6.1 nodeType: 1, 2, 3 只读属性 37 //6.2 nodeName: 返回对应的节点的名字 只读属性 38 //6.3 nodeValue: null, 属性值, 文本值 可读写的属性. 39 40 //7. 属性节点: 41 //7.1 一般情况下不单独获取属性节点, 42 //而是通过 元素节点.属性名 的方式来读写属性值 43 44 window.onload = function(){ 45 //弹出对话框. 46 //alert("helloworld"); 47 48 //var bjNode = document.getElementById("bj"); 49 //alert(bjNode); 50 51 //var liNodes = document.getElementsByTagName("li"); 52 //alert(liNodes.length); 53 54 //var genderNodes = document.getElementsByName("gender"); 55 //alert(genderNodes.length); 56 57 //var bjNodes = document.getElementsByName("BeiJing"); 58 //alert(bjNodes.length); 59 60 // var cityNode = document.getElementById("city"); 61 //var cityLiNodes = cityNode.getElementsByTagName("li"); 62 //alert(cityLiNodes.length); 63 64 // var liChildren = cityNode.childNodes; 65 // alert(liChildren.length); 66 // 67 // var cityFirstChild = cityNode.firstChild; 68 // alert(cityFirstChild); 69 70 var bjNode = document.getElementById("bj"); 71 alert(bjNode.firstChild.nodeValue); 72 bjNode.firstChild.nodeValue = "尚硅谷"; 73 74 // var nameNode = document.getElementsByName("username")[0]; 75 // alert(nameNode.value); 76 // nameNode.value = "尚硅谷"; 77 } 78 79 </script> 80 81 </head> 82 <body> 83 <p>你喜欢哪个城市?</p> 84 <ul id="city"> 85 <li id="bj" name="BeiJing">北京</li> 86 <li>上海</li> 87 <li>东京</li> 88 <li>首尔</li> 89 </ul> 90 91 <br><br> 92 <p>你喜欢哪款单机游戏?</p> 93 <ul id="game"> 94 <li id="rl">红警</li> 95 <li>实况</li> 96 <li>极品飞车</li> 97 <li>魔兽</li> 98 </ul> 99 100 <br><br> 101 gender: 102 <input type="radio" name="gender" value="male"/>Male 103 <input type="radio" name="gender" value="female"/>Female 104 105 <br><br> 106 name: <input type="text" name="username" value="atguigu"/> 107 108 </body> 109 </html>
1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4 <title>Insert title here</title> 5 <script type="text/javascript"> 6 7 //需求: 点击 submit 按钮时, 检查是否选择 type, 若没有选择给出提示: "请选择类型"; 8 // 检查文本框中是否有输入(可以去除前后空格), 若没有输入,则给出提示: "请输入内容"; 9 //若检查都通过, 则在相应的 ul 节点中添加对应的 li 节点 10 11 //需求2: 使包括新增的 li 都能响应 onclick 事件: 弹出 li 的文本值. 12 13 window.onload = function(){ 14 15 function showContent(liNode){ 16 alert("^_^#" + liNode.firstChild.nodeValue); 17 } 18 19 var liNodes = document.getElementsByTagName("li"); 20 for(var i = 0; i < liNodes.length; i++){ 21 liNodes[i].onclick = function(){ 22 showContent(this); 23 } 24 } 25 26 //1. 获取 #submit 对应的按钮 submitBtn 27 var submit = document.getElementById("submit"); 28 29 //2. 为 submitBtn 添加 onclick 响应函数 30 submit.onclick = function(){ 31 32 //4. 检查是否选择 type, 若没有选择给出提示: "请选择类型" 33 //4.1 选择所有的 name="type" 的节点 types 34 var types = document.getElementsByName("type"); 35 36 //4.2 遍历 types, 检查其是否有一个 type 的 checked 属性存在, 就可说明 37 //有一个 type 被选中了: 通过 if(元素节点.属性名) 来判断某一个元素节点是否有 38 //该属性. 39 var typeVal = null; 40 for(var i = 0; i < types.length; i++){ 41 if(types[i].checked){ 42 typeVal = types[i].value; 43 break; 44 } 45 } 46 47 //4.3 若没有任何一个 type 被选中, 则弹出: "请选择类型". 响应方法结束: 48 //return false 49 if(typeVal == null){ 50 alert("请选择类型"); 51 return false; 52 } 53 54 //5. 获取 name="name" 的文本值: 通过 value 属性: nameVal 55 var nameEle = document.getElementsByName("name")[0]; 56 var nameVal = nameEle.value; 57 58 //6. 去除 nameVal 的前后空格. 59 var reg = /^s*|s*$/g; 60 nameVal = nameVal.replace(reg, ""); 61 62 //使 name 的文本框也去除前后空格. 63 nameEle.value = nameVal; 64 65 //6. 把 nameVal 和 "" 进行比较, 若是 "" 说明只出入了空格, 弹出 "请输入内容" 66 //方法结束: return false 67 if(nameVal == ""){ 68 alert("请输入内容"); 69 return false; 70 } 71 72 //7. 创建 li 节点 73 var liNode = document.createElement("li"); 74 75 //8. 利用 nameVal 创建文本节点 76 var content = document.createTextNode(nameVal); 77 78 //9. 把 8 加为 7 的子节点 79 liNode.appendChild(content); 80 81 //11. 为新创建的 li 添加 onclick 响应函数 82 liNode.onclick = function(){ 83 showContent(this); 84 } 85 86 //10. 把 7 加为选择的 type 对应的 ul 的子节点 87 document.getElementById(typeVal) 88 .appendChild(liNode); 89 90 //3. 在 onclick 响应函数的结尾处添加 return false, 就可以取消提交按钮的 91 //默认行为. 92 return false; 93 } 94 } 95 96 </script> 97 </head> 98 <body> 99 100 <p>你喜欢哪个城市?</p> 101 102 <ul id="city"> 103 <li id="bj">北京</li> 104 <li>上海</li> 105 <li>东京</li> 106 <li>首尔</li> 107 </ul> 108 109 <br><br> 110 <p>你喜欢哪款单机游戏?</p> 111 <ul id="game"> 112 <li id="rl">红警</li> 113 <li>实况</li> 114 <li>极品飞车</li> 115 <li>魔兽</li> 116 </ul> 117 118 <br><br> 119 120 <form action="dom-7.html" name="myform"> 121 122 <input type="radio" name="type" value="city">城市 123 <input type="radio" name="type" value="game">游戏 124 125 name: <input type="text" name="name"/> 126 127 <input type="submit" value="Submit" id="submit"/> 128 129 </form> 130 131 132 </body> 133 </html>