javascript - 在js严格模式情况下"use strict"; var的局部变量给出的值如何传递到下一个函数里面?

查看:110
本文介绍了javascript - 在js严格模式情况下"use strict"; var的局部变量给出的值如何传递到下一个函数里面?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

$("#score").on("click", function () {
    //信息框
    var str = ['较差', '一般', '良好', '不错', '极佳'];
    setTimeout(function () {
        $(document.body).on("click", ".star_score a", function () {
            var num = $(this).index();
            var as = $(".star_score a");
            for (var i = 0; i <= num; i++) {
                as.eq(i).attr("class", "clibg");
            }
            for (var i = num + 1, len = as.length - 1; i <= len; i++) {
                as.eq(i).attr('class', '');
            }
            var ns = $(".clibg").length;  //在这里我要把ns传递到下面的回调函数里,请问怎么做?
            $(".comment").text(str[ns - 1]);
            console.log(ns); 
        })
        
    }, 1000);
    layer.open({
        content: '<div id="starttwo" class="block clearfix">' +
            '            <div class="give-score">给我打个分吧</div>' +
            '            <div class="star_score" style="width: 110px;">' +
            '                <a href="javascript:void(0)" style="left: 0px; width: 22px; z-index: 5;"></a>' +
            '                <a href="javascript:void(0)" style="left: 0px; width: 44px; z-index: 4;"></a>' +
            '                <a href="javascript:void(0)" style="left: 0px; width: 66px; z-index: 3;"></a>' +
            '                <a href="javascript:void(0)" style="left: 0px; width: 88px; z-index: 2;"></a>' +
            '                <a href="javascript:void(0)" style="left: 0px; width: 110px; z-index: 1;"></a>' +
            '            </div>' +
            '            <div class="comment"><span class="fenshu"></span></div>' +
            '        </div>',
        btn: '提交',
        yes: function (index) {
            layer.close(index)
                //这里是提交才会执行
            if (ns) {   //这里ns的值没有收到上面的局部变量。求万能的大神给出解决方法。
                $.ajax({
                    url: praiseURL,
                    type: 'post',
                    data: {
                        key: "mooc",
                        toKen: toKen,
                        memberId: memberId,
                        courseId: courseId,
                        grade: ns
                    },
                    success: function success(msg) {
                        console.log()
                            //提示
                        layer.open({
                            content: '你已评过分!',
                            skin: 'msg',
                            time: 2 //2秒后自动关闭
                        });
                    }
                })
            } else {
                layer.open({
                    content: '尚未评分!',
                    skin: 'msg',
                    time: 2 //2秒后自动关闭
                });
            }
        }
    });
})

**var ns = $(".clibg").length; //在这里我要把ns传递到下面的回调函数里,请问怎么做?

if (ns) { //这里ns的值没有收到上面的局部变量。求万能的大神给出解决方法。**

解决方案

  
$("#score").on("click", function () {
    //定义事件监听
    $(document.body).on("click", ".star_score a", function () {
                var num = $(this).index();
                var as = $(".star_score a");
                for (var i = 0; i <= num; i++) {
                    as.eq(i).attr("class", "clibg");
                }
                for (var i = num + 1, len = as.length - 1; i <= len; i++) {
                    as.eq(i).attr('class', '');
                }
                var ns = $(".clibg").length;  //在这里我要把ns传递到下面的回调函数里,请问怎么做?
                $(".comment").text(str[ns - 1]);
                $("#starttwo").data("score",ns);
                console.log(ns); 
    });
      
    //信息框
    var str = ['较差', '一般', '良好', '不错', '极佳'];
    layer.open({
        content: '<div id="starttwo" class="block clearfix">' +
            '            <div class="give-score">给我打个分吧</div>' +
            '            <div class="star_score" style="width: 110px;">' +
            '                <a href="javascript:void(0)" style="left: 0px; width: 22px; z-index: 5;"></a>' +
            '                <a href="javascript:void(0)" style="left: 0px; width: 44px; z-index: 4;"></a>' +
            '                <a href="javascript:void(0)" style="left: 0px; width: 66px; z-index: 3;"></a>' +
            '                <a href="javascript:void(0)" style="left: 0px; width: 88px; z-index: 2;"></a>' +
            '                <a href="javascript:void(0)" style="left: 0px; width: 110px; z-index: 1;"></a>' +
            '            </div>' +
            '            <div class="comment"><span class="fenshu"></span></div>' +
            '        </div>',
        btn: '提交',
        yes: function (index) {
            var ns=$("#starttwo").data("score");//获取值
            //这里是提交才会执行
            if (ns) {   //这里ns的值没有收到上面的局部变量。求万能的大神给出解决方法。
                $(document.body).off("click", ".star_score a");
                layer.close(index);
                $.ajax({
                    url: praiseURL,
                    type: 'post',
                    data: {
                        key: "mooc",
                        toKen: toKen,
                        memberId: memberId,
                        courseId: courseId,
                        grade: ns
                    },
                    success: function success(msg) {
                        console.log()
                            //提示
                        layer.open({
                            content: '你已评过分!',
                            skin: 'msg',
                            time: 2 //2秒后自动关闭
                        });
                    }
                })
            } else {
                layer.open({
                    content: '尚未评分!',
                    skin: 'msg',
                    time: 2 //2秒后自动关闭
                });
            }
        }
    });
});

这篇关于javascript - 在js严格模式情况下&quot;use strict&quot;; var的局部变量给出的值如何传递到下一个函数里面?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆