唐老丫 發表於 2019-8-19 22:02:00

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)">先清空节点内容,再添加文本(字符串:'&lt;h1&gt;我是h1&lt;/h1&gt;')</span>
divEle.innerHTML="&lt;p&gt;2&lt;/p&gt;"         <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">先清空节点内容,可识别文本内的html标签(标签:'&lt;h1&gt;我是h1&lt;/h1&gt;')</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>&lt;body&gt;
&lt;div id="div1" onclick="changeColor(this)"&gt; 我是div,点我 &lt;/div&gt;
&lt;script&gt;                                                <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>&lt;/script&gt;
&lt;/body&gt;</pre>
</div>
<p class="md-end-block md-p"><span class="md-plain">通过button被点击来修改另一个div标签样式:</span></p>
<div class="cnblogs_code">
<pre>&lt;body&gt;
&lt;input type="button" id="b1" value="开关" onclick="change()"&gt;
&lt;div class="c1 bg-red"&gt;&lt;/div&gt;
&lt;script&gt;                                              <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">&lt;script&gt;必须放在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>&lt;/script&gt;
&lt;/body&gt;</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>&lt;body&gt;
&lt;div id="div1"&gt;来,点亮我的绿&lt;/div&gt;
&lt;script&gt;
    <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>&lt;/script&gt;
&lt;/body&gt;</pre>
</div>
<p class="md-end-block md-p"><span class="md-plain">通过button被点击来修改另一个div标签样式:</span></p>
<div class="cnblogs_code">
<pre>&lt;body&gt;
&lt;input type="button" id="b2" value="开关"&gt;
&lt;div class="c1 bg-red"&gt;&lt;/div&gt;
&lt;script&gt;
    <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 = ()=&gt;<span style="color: rgba(0, 0, 0, 1)">{
      change();
    }
</span>&lt;/script&gt;
&lt;/body&gt;</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>&lt;div id="box1" &gt;&lt;/div&gt;
&lt;script&gt;
    <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>&lt;/script&gt;</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>&lt;body&gt;
&lt;input type="button" id="b1" value="开始"&gt;
&lt;input type="button" id="b2" value="停止"&gt;
&lt;input type="text" id="i1"&gt;
&lt;script&gt;
    <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>&lt;/script&gt;
&lt;/body&gt;</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>&lt;body&gt;
&lt;input type="text" id="i1" value="海飞丝"&gt;
&lt;input type="text" id="i2" value="辣条" onfocus="f1(this);" onblur="f2(this);"&gt;
&lt;script&gt;                                    <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>&lt;/script&gt;
&lt;/body&gt;</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>&lt;body&gt;
&lt;select id="province"&gt;
    &lt;option&gt;请选择省:&lt;/option&gt;
&lt;/select&gt;
&lt;select id="city"&gt;
    &lt;option&gt;请选择市:&lt;/option&gt;
&lt;/select&gt;
&lt;script&gt;
    <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 &lt; 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>&lt;/script&gt;
&lt;/body&gt;</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div><br><br>
来源:https://www.cnblogs.com/mylu/p/11380035.html
頁: [1]
查看完整版本: python 之 前端开发( DOM操作)