1. 程式人生 > >JS點選事件實現改變對應標籤背景顏色

JS點選事件實現改變對應標籤背景顏色

今天同學提問的一個“JS實現的效果是點選對應的標籤,起背景顏色變成紅色,字型變成白色”,但是她的頁面中只是字變了顏色,但是背景顏色去沒有變化,
其截圖如下:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

經過頁面的除錯,發現並沒有進入到迴圈裡面,利用alert(cns.length);發現彈出的cns[]陣列的長度為0個,
問題:
1、說明在document.getElementById(“nt4”).getElementsByTagName(“ul li”);取不到對應的li,發現不能這樣取值,應該寫成:document.getElementById(“nt4”).getElementsByTagName(“li”); alert(cns.length),證明可以取值;
2、但是取值之後,並沒有進入到onclick事件裡面去,這是為什麼呢,將onclick事件換成監聽事件: cns[i].addEventListener(‘click’,function () { }發現是可以進行點選的,因為這個頁面中的li還有其他地方寫了onclick事件,同一個元素有多個點選事件時,會被替代,所以圖中的點選事件被其他的覆蓋了,更換成addEventListene(‘click’,function () { }監聽事件即可;
3、js程式碼部分可以實行了之後,發現背景顏色還是沒有變成紅色,因為css樣式中,有原本.CRD_order li{}裡寫了背景顏色,而.lis{}的權重不夠,背景顏色自然不能覆蓋原來的顏色。

經過除錯後,的程式碼如下:
html結構如下:

<div class="CRD" id="nt4">
    <ul class="CRD_order" >
    <li class="CRD-order" id="C_rd_order1" >全部<p class="ck1" id="ck1"></p></li>
    <li class="CRD-order" id="C_rd_order2">未預定同學<p class="ck1" id="ck2"></p></li>
<li class="CRD-order" id="C_rd_order3" >已預訂同學<p class="ck1" id="ck3"></p></li> <li class="CRD-order" id="C_rd_order4" >未支付定金同學<p class="ck1" id="ck4"></p></li> <li class="CRD-order" id="C_rd_order5" >已支付定金同學<p class="ck1" id="ck5">
</p></li> <li class="CRD-right">下載班級報表</li> </ul> </div>

頁面效果:

這裡寫圖片描述

需實現的效果是點選對應的標籤,起背景顏色變成紅色,字型變成白色
js程式碼:

    <script>
        var cns = document.getElementById("nt4").getElementsByTagName("li");

        for(var i = 0;i<cns.length;i++)
        {
            cns[i].addEventListener('click',function () {

                for(var i = 0;i<cns.length;i++){
                    cns[i].className = "";
                }
                this.className = "lis";
            });
        }
    </script>


//css樣式部分:
    .CRD_order  .lis{
            background: red;
            color: #fff;
        }

知識點:
1、.getElementsByTagName(“li”);取值為一個li集合,對每個li點選事件需要for迴圈才能取到具體的每個li

for(var i = 0;i<cns.length;i++)
        {
            cns[i].addEventListener('click',function () {

        }

2、一個元素不能有多個點選事件,會被後來的點選事件覆蓋;
3、css權重:二級權重大於一級權重:.CRD_order .lis{}的權重大於.lis{}
4、除錯程式碼時要學會利用彈出取值的方法來確定所寫的程式碼是否正確,是否真的取到了你想要的值,取值不對,後面的也就都不會實現了;

相關推薦

JS事件實現改變對應標籤背景顏色

今天同學提問的一個“JS實現的效果是點選對應的標籤,起背景顏色變成紅色,字型變成白色”,但是她的頁面中只是字變了顏色,但是背景顏色去沒有變化, 其截圖如下: 經過頁面的除錯,發現並沒有進入到迴圈裡面,利用alert(cns.length);發現彈

js模擬事件實現程式碼

http://www.jb51.net/article/31743.htm 在實際的應用開發中,我們會常常用到JS的模事件,比如說點選事件,舉個簡單的例子,點選表單外的“提交”按鈕來提交表單。上程式碼吧 html: 複製程式碼 程式碼如下: <h3&

JS 事件onclick:物件小區域顏色,大區域顏色改變

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <

iOS 攔截導航欄返回按鈕事件(只攔截事件改變系統按鈕樣式)

#import <UIKit/UIKit.h> @protocol BackButtonHandlerProtocol <NSObject> @optional /** 重寫下面的方法以攔截導航欄返回按鈕點選事件,返回 YES 則 pop,NO 則不 pop @

Android RecyclerView事件實現的兩種方式

因為經常會用到RecyclerView,今天在這裡總結一下實現RecyclerView點選事件的實現方法 一、通過介面回撥的方式實現     1. 首先定義一個點選的介面(Recyclerview自身不帶有點選事件的回撥) public interface OnRec

Android RecyclerView事件實現的幾種方式

因為經常會用到RecyclerView,今天在這裡總結一下實現RecyclerView點選事件的實現方法 一、通過介面回撥的方式實現     1. 首先定義一個點選的介面(Recyclerview自身不帶有點選事件的回撥) public interface OnRec

js事件在ios中失效的解決方案

ios中不允許將點選事件繫結在document或者body上,如果繫結上的話將會失效。解決方案: 例如: $(document).on(‘click’, ‘#content’, function ()}… //無效 第一種: 改為: 用#content外面的標

Unity Ui事件實現

1.在Main Camera上 新增 Physics Raycaster元件 2.場景裡需要有 EventSystem (Create - UI- EventSystem) 3.物體需要有Collide

recyclerview簡析,事件實現簡析

RecyclerView簡介 RecyclerView是Android5.0提出的UI控制元件,通常用來代替傳統的ListView。 其官方給出的定義如下: A flexible view for providing a limited window

js事件冒泡

當子節點與父節點上均有點選事件的時候,一般情況下點選會觸發兩個事件(子節點的點選事件會向父一級傳遞),有時需要在點選子節點的時候,中止父節點接下來的行為。 <div onclick="fun

python 頁面事件實現selenium

pip install selenium # coding=utf-8 from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get('h

js事件禁止冒泡

$(".car-style").click(function(){ $(".operate-mask-outer").show(); // 點選黃色的禁停站,彈出框顯示 }); $("#operateMask").click(func

詳解Android中回撥機制與RecyclerView的Item事件實現

總是看書上寫著回調回調,以為就是函式呼叫換了個名字,尤其是看了Button的點選事件實現後,覺得不就是觸發機制。 A事件發生->後臺處理邏輯->告訴前臺怎麼做->結束。 Android常見button點選事件: loginB

RecyclerView的Item事件實現總結

自從開始使用RecyclerView代替ListView,會發現有很多地方需要學習。前一段時間的學習記錄有: 實現 RecyclerView的Item的點選事件有三種方式: 在建立 ItemView時新增點選監聽 當 ItemView attach Recycle

PC端微信瀏覽器js事件失效

**電腦端微信瀏覽器js點選事件失效** 前段時間發現開發的一個微信公眾號上一個按鈕的點選事件在手機上是正常的,電腦端手機微信裡卻不起作用。 在網上找了好久都沒有找到解決辦法。 後來檢視

Ngui 五種事件實現方式及在3d場景點透事件

[C#] 純文字檢視 複製程式碼 using UnityEngine; using System.Collections; public class EventListerrnTest : MonoBehaviour { public Transform btn01; public Transf

RecyclerView Item事件實現 類似GridView

RecyclerView Item點選事件實現,請看程式碼 package sample.mars.com.androidutsample.view; import android.conten

Button事件實現頁面跳轉的兩種方法

方法一: 常用方式,在java檔案中給Button設定點選監聽事件button.setOnClickListener(),新建Intent類,從MainActivity跳轉至ImageTest but

android混淆之後webview不響應js事件

在js的介面上面寫上@JavascriptInterface。。。找了好久,在官方文件上找到的解決辦法。。 補充:混淆的時候加上這兩句,xxx表示webview 的全路勁 -keep class xxx.xxx.xxx$*{  <methods>; } -kee

Android 按鈕的事件實現1

在xml檔案中建立一個Button,新增一個onClick屬性, <Button      android:layout_width="wrap_content"     android:layout_height="wrap_content"     android