python 之 前端开发( DOM操作)
<h4 class="md-end-block md-heading md-focus"><span class="md-plain">11.47 DOM操作</span></h4><p class="md-end-block md-p"><span><strong>查找节点:</strong></span></p>
<h5 class="md-end-block md-heading"><span class="md-plain">11.471 直接查找</span></h5>
<div class="cnblogs_code">
<pre>document.getElementById <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">根据ID获取唯一一个标签</span>
document.getElementsByClassName <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">根据class属性获取一系列标签</span>
document.getElementsByTagName <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">根据标签名获取一系列标签</span></pre>
</div>
<h5 class="md-end-block md-heading"><span class="md-plain">11.472 间接查找</span></h5>
<table class="md-table">
<thead>
<tr class="md-end-block"><th><span class="td-span"><span class="md-plain">语法</span></span></th><th><span class="td-span"><span class="md-plain">含义</span></span></th></tr>
</thead>
<tbody>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">childNodes</span></span></td>
<td><span class="td-span"><span class="md-plain">获取所有的子节点,除了元素还有文本等</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">children</span></span></td>
<td><span class="td-span"><span class="md-plain">获取所有元素子节点,不包含文本</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">parentNode</span></span></td>
<td><span class="td-span"><span class="md-plain">获取父节点</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">previousSibling</span></span></td>
<td><span class="td-span"><span class="md-plain">获取上一个兄弟节点,不包含文本</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">previousElementSibling</span></span></td>
<td><span class="td-span"><span class="md-plain">获取上一个兄弟元素节点,包含文本</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">nextSibling</span></span></td>
<td><span class="td-span"><span class="md-plain">获取下一个兄弟节点,不包含文本</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">nextElementSibling</span></span></td>
<td><span class="td-span"><span class="md-plain">获取下一个兄弟元素节点,包含文本</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">firstChild</span></span></td>
<td><span class="td-span"><span class="md-plain">获取第一个子节点,不包含文本</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">firstElementChild</span></span></td>
<td><span class="td-span"><span class="md-plain">获取第一个子节点,包含文本</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">lastChild</span></span></td>
<td><span class="td-span"><span class="md-plain">获取最后一个子节点,不包含文本</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">lastElementChild</span></span></td>
<td><span class="td-span"><span class="md-plain">获取父元素最后一个元素节点,包含文本</span></span></td>
</tr>
</tbody>
</table>
<h5 class="md-end-block md-heading"><span class="md-plain">11.473 增加节点</span></h5>
<div class="cnblogs_code">
<pre>1<span style="color: rgba(0, 0, 0, 1)">、创建新节点
</span><span style="color: rgba(0, 0, 255, 1)">var</span> divEle = document.createElement('div'<span style="color: rgba(0, 0, 0, 1)">);
</span>2<span style="color: rgba(0, 0, 0, 1)">、追加一个子节点(放到最后)
父节点.appendChild(新的子节点);
</span>3<span style="color: rgba(0, 0, 0, 1)">、插入一个子节点(插入到某个节点前)
父节点.insertBefore(新的子节点,某个节点);
</span>4<span style="color: rgba(0, 0, 0, 1)">、克隆节点
要复制的节点.cloneNode(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">括号里不带参数和带参数false:只复制节点本身,不复制子节点。</span>
要复制的节点.cloneNode(<span style="color: rgba(0, 0, 255, 1)">true</span>); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">带参数true:既复制节点本身,也复制其所有的子节点。</span></pre>
</div>
<h5 class="md-end-block md-heading"><span class="md-plain">11.474 删除、替换节点</span></h5>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">父节点.removeChild(要删除的子节点);
父节点.replaceChild(新的子节点, 某个子节点); </span></pre>
</div>
<h5 class="md-end-block md-heading"><span class="md-plain">11.475 修改/设置节点属性</span></h5>
<div class="cnblogs_code">
<pre>1<span style="color: rgba(0, 0, 0, 1)">、获取文本节点的值:
</span><span style="color: rgba(0, 0, 255, 1)">var</span> divEle = document.getElementById("d1"<span style="color: rgba(0, 0, 0, 1)">)
divEle.innerText </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">只查看所有标签内的文本 </span>
divEle.innerHTML <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">查看所有子标签,包括文本和子标签</span>
2<span style="color: rgba(0, 0, 0, 1)">、设置文本节点的值:
</span><span style="color: rgba(0, 0, 255, 1)">var</span> divEle = document.getElementById("d1"<span style="color: rgba(0, 0, 0, 1)">)
divEle.innerText</span>="1" <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">先清空节点内容,再添加文本(字符串:'<h1>我是h1</h1>')</span>
divEle.innerHTML="<p>2</p>" <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">先清空节点内容,可识别文本内的html标签(标签:'<h1>我是h1</h1>')</span>
3<span style="color: rgba(0, 0, 0, 1)">、attribute操作
</span><span style="color: rgba(0, 0, 255, 1)">var</span> divEle = document.getElementById("d1"<span style="color: rgba(0, 0, 0, 1)">);
divEle.setAttribute(</span>"age","18"<span style="color: rgba(0, 0, 0, 1)">)
divEle.getAttribute(</span>"age"<span style="color: rgba(0, 0, 0, 1)">)
divEle.removeAttribute(</span>"age"<span style="color: rgba(0, 0, 0, 1)">)
</span>4<span style="color: rgba(0, 0, 0, 1)">、自带的属性还可以直接.属性名来获取和设置
imgEle.src
imgEle.src</span>="..."</pre>
</div>
<h5 class="md-end-block md-heading"><span class="md-plain">11.476 获取元素的值</span></h5>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">适用于input、select、textarea标签
</span><span style="color: rgba(0, 0, 255, 1)">var</span> x=document.getElementById('input'<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 0, 255, 1)">var</span> y=document.getElementById('select'<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 0, 255, 1)">var</span> z=document.getElementById('textarea'<span style="color: rgba(0, 0, 0, 1)">)
x.value
y.value
z.value</span></pre>
</div>
<h5 class="md-end-block md-heading"><span class="md-plain">11.477 class操作</span></h5>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> x=document.getElementById('div1'<span style="color: rgba(0, 0, 0, 1)">)
x.classList.remove(</span>'col1') <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">x.classList里删除class='col1'</span>
x.classList.add('col1') <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">x.classList里添加class='col1'</span>
x.classList.contains('col1') <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">x.classList里是否有class='col1'</span>
x.classList.toggle('col1') <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">没有就添加,返回true,有就删除,返回false</span></pre>
</div>
<h5 class="md-end-block md-heading"><span class="md-plain">11.478 css操作</span></h5>
<div class="cnblogs_code">
<pre>obj.style.backgroundColor="red" <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">此处设置的是行内样式</span>
1<span style="color: rgba(0, 0, 0, 1)">.对于没有中横线的CSS属性一般直接使用style.属性名即可 如:
obj.style.margin
obj.style.width
obj.style.left
obj.style.position
</span>2<span style="color: rgba(0, 0, 0, 1)">.对含有中横线的CSS属性,将中横线后面的第一个字母换成大写即可 如:
obj.style.marginTop
obj.style.borderLeftWidth
obj.style.zIndex
obj.style.fontFamily</span></pre>
</div>
<h5 class="md-end-block md-heading"><span class="md-plain">11.479 事件</span></h5>
<p class="md-end-block md-p"><span class="md-plain">HTML 4.0 的新特性之一是有能力使 HTML 事件触发浏览器中的动作(action),比如当用户点击某个 HTML 元素时执行一段JavaScript。下面是一个属性列表,这些属性可插入 HTML 标签来定义事件动作。</span></p>
<p class="md-end-block md-p"><span class="md-plain">1、常用事件</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">onclick 当用户点击某个对象时调用的事件句柄。
ondblclick 当用户双击某个对象时调用的事件句柄。
onfocus 元素获得焦点。 </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 输入框</span>
onblur 元素失去焦点。 <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.</span>
onchange 域的内容被改变。 <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动)</span>
<span style="color: rgba(0, 0, 0, 1)">
onkeydown 某个键盘按键被按下。 </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.</span>
<span style="color: rgba(0, 0, 0, 1)">onkeypress 某个键盘按键被按下并松开。
onkeyup 某个键盘按键被松开。
onload 一张页面或一幅图像完成加载。
onmousedown 鼠标按钮被按下。
onmousemove 鼠标被移动。
onmouseout 鼠标从某元素移开。
onmouseover 鼠标移到某元素之上。
onselect </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">在文本框中的文本被选中时发生。</span>
onsubmit <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">/确认按钮被点击,使用的对象是form。</span></pre>
</div>
<p class="md-end-block md-p"><span class="md-plain">2、绑定方式</span></p>
<p class="md-end-block md-p"><span class="md-plain">方式一:</span></p>
<p class="md-end-block md-p"><span class="md-plain">行内绑定:直接通过div被点击来修改自身样式:</span></p>
<div class="cnblogs_code">
<pre><body>
<div id="div1" onclick="changeColor(this)"> 我是div,点我 </div>
<script> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">this是实参,表示触发事件的当前元素</span>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> changeColor(ths) {
ths.style.backgroundColor</span>="green"; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">函数定义过程中的ths为形参</span>
<span style="color: rgba(0, 0, 0, 1)">}
</span></script>
</body></pre>
</div>
<p class="md-end-block md-p"><span class="md-plain">通过button被点击来修改另一个div标签样式:</span></p>
<div class="cnblogs_code">
<pre><body>
<input type="button" id="b1" value="开关" onclick="change()">
<div class="c1 bg-red"></div>
<script> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"><script>必须放在div定义后,可以放在body里</span>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> change() {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> c1Ele = document.getElementsByClassName("c1"); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 找到c1这个标签 </span>
c1Ele.classList.toggle("bg-green"); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 修改classList</span>
<span style="color: rgba(0, 0, 0, 1)"> }
</span></script>
</body></pre>
</div>
<p class="md-end-block md-p"><span class="md-plain">方式二:</span></p>
<p class="md-end-block md-p"><span class="md-plain">直接绑定匿名函数:直接通过div被点击来修改自身样式:</span></p>
<div class="cnblogs_code">
<pre><body>
<div id="div1">来,点亮我的绿</div>
<script>
<span style="color: rgba(0, 0, 255, 1)">var</span> oDiv = document.getElementById('div1'<span style="color: rgba(0, 0, 0, 1)">);
oDiv.onclick </span>= <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">() {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.style.backgroundColor = 'red'<span style="color: rgba(0, 0, 0, 1)">;
}
</span></script>
</body></pre>
</div>
<p class="md-end-block md-p"><span class="md-plain">通过button被点击来修改另一个div标签样式:</span></p>
<div class="cnblogs_code">
<pre><body>
<input type="button" id="b2" value="开关">
<div class="c1 bg-red"></div>
<script>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> change() {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> c1Ele = document.getElementsByClassName("c1"); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 找到c1这个标签</span>
c1Ele.classList.toggle("bg-green"); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 修改classList</span>
<span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 0, 255, 1)">var</span> b2Ele = document.getElementById("b2"); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 通过JS代码绑定事件</span>
b2Ele.onclick = ()=><span style="color: rgba(0, 0, 0, 1)">{
change();
}
</span></script>
</body></pre>
</div>
<p class="md-end-block md-p"><span class="md-plain">方式三:</span></p>
<p class="md-end-block md-p"><span class="md-plain">先单独定义函数,再绑定</span></p>
<div class="cnblogs_code">
<pre><div id="box1" ></div>
<script>
<span style="color: rgba(0, 0, 255, 1)">var</span> div1 = document.getElementById("box1"<span style="color: rgba(0, 0, 0, 1)">);
div1.onclick </span>= fn; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">注意,这里是fn,fn代表的是整个函数,fn()指的是返回值。</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> fn() { <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">单独定义函数</span>
alert("我是弹出的内容"<span style="color: rgba(0, 0, 0, 1)">);
}
</span></script></pre>
</div>
<h6 class="md-end-block md-heading"><span class="md-plain">11.4791 定时器</span></h6>
<div class="cnblogs_code"><img id="code_img_closed_cc783a56-2c7a-4426-8f7c-630bd8ef75e1" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_cc783a56-2c7a-4426-8f7c-630bd8ef75e1" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_cc783a56-2c7a-4426-8f7c-630bd8ef75e1" class="cnblogs_code_hide">
<pre><body>
<input type="button" id="b1" value="开始">
<input type="button" id="b2" value="停止">
<input type="text" id="i1">
<script>
<span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)"> t;
</span><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> showTime() {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> now = <span style="color: rgba(0, 0, 255, 1)">new</span> Date(); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 将当前时间填写到i1中</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> i1Ele = document.getElementById("i1"<span style="color: rgba(0, 0, 0, 1)">);
i1Ele.value </span>=<span style="color: rgba(0, 0, 0, 1)"> now.toLocaleString();
}
showTime(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">1找到开始按钮,给它绑定事件,点击后每隔1秒执行一次showTime()</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> b1Ele = document.getElementById("b1"<span style="color: rgba(0, 0, 0, 1)">);
b1Ele.onclick </span>= <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> () {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 0, 1)">t){
t </span>= setInterval(showTime, 1000<span style="color: rgba(0, 0, 0, 1)">);
}
};
</span><span style="color: rgba(0, 0, 255, 1)">var</span> b2Ele = document.getElementById("b2");<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">2找到停止按钮,给它绑定事件,点击之后就清除定时器</span>
b2Ele.onclick = <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> () {
clearInterval(t); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 清除的是定时器,</span>
<span style="color: rgba(0, 0, 0, 1)"> console.log(t);
t </span>= undefined; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">t只是一个普通的变量,它保存了定时器的id值,清除定时器后t中还有值</span>
<span style="color: rgba(0, 0, 0, 1)"> };
</span></script>
</body></pre>
</div>
<span class="cnblogs_code_collapse">定时器</span></div>
<h6 class="md-end-block md-heading"><span class="md-plain">11.4792 输入框聚焦</span></h6>
<div class="cnblogs_code"><img id="code_img_closed_05480e13-8195-4f7d-b2e3-9beb6f164027" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_05480e13-8195-4f7d-b2e3-9beb6f164027" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_05480e13-8195-4f7d-b2e3-9beb6f164027" class="cnblogs_code_hide">
<pre><body>
<input type="text" id="i1" value="海飞丝">
<input type="text" id="i2" value="辣条" onfocus="f1(this);" onblur="f2(this);">
<script> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">this指的是当前事件的标签对象</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">方式一</span>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> f1(ths) {
ths.value </span>= ""<span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> f2(ths) {
ths.value </span>= "辣条"<span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">方式二</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> i1Ele = document.getElementById("i1"<span style="color: rgba(0, 0, 0, 1)">);
i1Ele.onfocus </span>= <span style="color: rgba(0, 0, 255, 1)">function</span> () { <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 给i1设置获取光标的事件</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.value = ""<span style="color: rgba(0, 0, 0, 1)">;
};
i1Ele.onblur </span>= <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> () {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.value = "海飞丝"; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 给i1设置失去光标的事件</span>
<span style="color: rgba(0, 0, 0, 1)"> }
</span></script>
</body></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<h6 class="md-end-block md-heading"><span class="md-plain">11.4793 select联动</span></h6>
<div class="cnblogs_code"><img id="code_img_closed_c6abdbaf-a70a-4b74-a5e8-71ba9a7be5dd" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_c6abdbaf-a70a-4b74-a5e8-71ba9a7be5dd" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_c6abdbaf-a70a-4b74-a5e8-71ba9a7be5dd" class="cnblogs_code_hide">
<pre><body>
<select id="province">
<option>请选择省:</option>
</select>
<select id="city">
<option>请选择市:</option>
</select>
<script>
<span style="color: rgba(0, 0, 255, 1)">var</span> s1Ele = document.getElementById("province"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">var</span> s2Ele = document.getElementById("city"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">var</span> data = {"上海": ["黄浦区", "静安区"], "北京": ["朝阳区", "海淀区"], "山东": ["威海市", "烟台市"<span style="color: rgba(0, 0, 0, 1)">]};
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (let k <span style="color: rgba(0, 0, 255, 1)">in</span> data) { <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 将省直辖市数据填充到第一个select中</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">console.log(k);</span>
let tmp = document.createElement("option"<span style="color: rgba(0, 0, 0, 1)">);
tmp.innerText </span>=<span style="color: rgba(0, 0, 0, 1)"> k;
s1Ele.appendChild(tmp); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 将创建的tmp添加到第一个select中</span>
<span style="color: rgba(0, 0, 0, 1)"> }
s1Ele.onchange </span>= <span style="color: rgba(0, 0, 255, 1)">function</span> () { <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 当第一个select框的值发生变化之后才去更新第二个select框</span>
s2Ele.innerHTML = ""; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">第二次选择区时清空第二个select框的option选项</span>
let p = document.createElement("option");<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">恢复默认选项'请选择省市'</span>
p.innerText = "请选择市"<span style="color: rgba(0, 0, 0, 1)">;
s2Ele.appendChild(p);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">console.log(this.value);</span>
let provine = <span style="color: rgba(0, 0, 255, 1)">this</span>.value; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">拿到选择的省或直辖市</span>
<span style="color: rgba(0, 0, 0, 1)">
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 将province对应的区信息 填充到第二个select中</span>
<span style="color: rgba(0, 0, 255, 1)">for</span> (let i = 0; i < data.length; i++<span style="color: rgba(0, 0, 0, 1)">) {
let tmp </span>= document.createElement("option"<span style="color: rgba(0, 0, 0, 1)">);
tmp.innerText </span>=<span style="color: rgba(0, 0, 0, 1)"> data;
s2Ele.appendChild(tmp);
}
}
</span></script>
</body></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div><br><br>
来源:https://www.cnblogs.com/mylu/p/11380035.html
頁:
[1]