javascript - 在js严格模式情况下"use strict"; var的局部变量给出的值如何传递到下一个函数里面?
本文介绍了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严格模式情况下"use strict"; var的局部变量给出的值如何传递到下一个函数里面?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文