js基础小练习1

评分

五星评分基本练习,鼠标移入移出后记录当前点击确定后是几星


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        span {
            color: rgba(0, 0, 0, .5);
            cursor: pointer;
        }
    </style>
</head>
<body>
    <span>❤</span>
    <span>❤</span>
    <span>❤</span>
    <span>❤</span>
    <span>❤</span>
</body>
</html>

上面是css很简单的样式,默认颜色是.5的黑色,当然下面的span也可以用js for循环来生成

<script>
        /*
        * 移入:改变span的颜色,从 0 到 鼠标移入的span位置
        * 移出:改变span的颜色,从 0 到 鼠标点击后的位置
        * 点击:记录点击了第几个
        * */

        var spanElements = document.querySelectorAll('span');
        //获取所有的span
        /*
        * 当前点击的值
        * 默认是-1,因为第0个表示的是1分
        * */
        var n = -1;

        for ( var i=0; i<spanElements.length; i++ ) {

            spanElements[i].index = i;

            spanElements[i].onmouseover = function() {
//                if (n == -1) {             
//                    change(this.index);
//                }
                change(this.index);  
              //直接简化下,如果移入,是小于当前移入的就都是红色,反之大于也就        
 是没移入之前的 都还是默认颜色
            };

            spanElements[i].onmouseout = function() {
                change(n);  //下面点击的时候记录了n为当前点击的是几,那么传参后 就是点击之前的移出就都是红色 ,点击之后的 就是默认灰色了
            };

            spanElements[i].onclick = function() {
                n = this.index;
            };

        }

        /*
        * 改变从0到end位置的span颜色
        * */
        function change(end) {
            for ( var i=0; i<spanElements.length; i++ ) {
                if (i <= end) {
                    spanElements[i].style.color = 'rgba(255,0,0,1)';
                } else {
                    spanElements[i].style.color = 'rgba(0,0,0,.5)';
                }
            }
        }
    </script>

点击全选和不全选

这个小练习就是歌曲的全选,当所有选中后,就为全选状态,单独的全选按钮也可以控制全选或者不全选

还是简单的css结构=,=

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>
        <input type="checkbox" id="checkAll">全选
        <ul>
            <li><input type="checkbox">0001</li>
            <li><input type="checkbox">0002</li>
            <li><input type="checkbox">0003</li>
            <li><input type="checkbox">0004</li>
            <li><input type="checkbox">0005</li>
        </ul>
    </div>
</body>
</html>

看下js代码

    <script>
        var checkAllElement = document.querySelector('#checkAll'); //全选按钮
        var checkBoxElements = document.querySelectorAll('ul input'); //所有的单选按钮
        checkAllElement.onclick = function() {
            for ( var i=0; i<checkBoxElements.length; i++ ) {
                checkBoxElements[i].checked = this.checked; 
 //在input里 checked,点击后(checkbox有小勾勾出现)就相当是ture的状态,没有就是false就不用在自定义一个布尔值来控制开关操作,for循环 当所有的单个input是点击状态就相当于全选是checked状态
            }

        }
        for ( var i=0; i<checkBoxElements.length; i++ ) {

            checkBoxElements[i].onclick = function() {

                /*
                * 临时统计法
                * */
                var n = 0;
                for ( var i=0; i<checkBoxElements.length; i++ ) {
                    if (checkBoxElements[i].checked) {  //如果其中一个单选n就加1
                        n++;
                    }
                }
                checkAllElement.checked = (n == checkBoxElements.length); 
//当n=所有的单选input的长度时,就表示已经是全部都点击了,那么==的结果就为true,那全选的cheked的状态也为true了,反之有一个没点击 那么就是false,全选也为false状态
            }
        }
    </script>

还有我们也可以通过单选的input是checked n就加1,在点击一次就是关闭那就n减1 通过比较n的值来确定全选的状态

    <script>
        var checkAllElement = document.querySelector('#checkAll');
        var checkBoxElements = document.querySelectorAll('ul input');

        var n = 0;

        checkAllElement.onclick = function() {
            for ( var i=0; i<checkBoxElements.length; i++ ) {
                checkBoxElements[i].checked = this.checked;
            }
            n = this.checked ? checkBoxElements.length : 0; 
        };

        for ( var i=0; i<checkBoxElements.length; i++ ) {
            checkBoxElements[i].onclick = function() {
                this.checked ? n++ : n--;
                checkAllElement.checked = (n == checkBoxElements.length);
            }
        }


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,176评论 5 469
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,190评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,232评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,953评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,879评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,177评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,626评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,295评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,436评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,365评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,414评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,096评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,685评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,771评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,987评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,438评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,032评论 2 341

推荐阅读更多精彩内容

  • //------------------------- 第一章 认识JQuery ----------------...
    米塔塔阅读 698评论 0 9
  • 为甚嚒要学习jQuery? 因为JS中有很多痛点: window.onload事件只能出现一次,如果出现多次,后面...
    magic_pill阅读 808评论 0 13
  • ###第一步 :首先电脑上已经安装react的脚手架 cnpm install create-react-app...
    焚心123阅读 536评论 1 1
  • 83个js原生代码实例,从易到难,涵盖js算法和几乎开发中用到的知识点(实时更新中) 实例中也包括了很多布局例如:...
    金华每文阅读 10,642评论 1 21
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,026评论 0 2