You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery星级评分开发中如何在click函数外访问number评分变量

问题根源
  • 作用域限制:你在click事件回调函数内部用var声明的number属于函数局部变量,仅在回调函数内部可访问,外部作用域无法直接读取
  • 执行时机错误:你写在click外面的console.log(number)会在DOM加载完成后立即执行,此时用户还没有触发星级点击操作,哪怕你把变量提出来,此时也只能拿到初始空值
修复方案

把number变量的声明提升到整个$(document).ready的顶层作用域,后续所有位置都可以直接访问这个变量获取最新的评分数值:

$(document).ready(function () {
    // 顶层声明评分变量,当前作用域内所有位置都可访问
    var ratingNumber = 0;

    $(".li").mouseover(function () {
        var current = $(this);
        $(".li").each(function (index) {
            $(this).addClass("hovered-stars");
            if (index == current.index()) {
                return false;
            }
        })
    })
    $(".li").mouseleave(function () {
        $(this).removeClass("hovered-stars");
    })
    $(".li").click(function () {
        $(".li").removeClass("clicked");
        $(".hovered-stars").addClass("clicked");
        // 直接给顶层变量赋值
        ratingNumber = $(".clicked").length;
        $("#message").html("You rated " + ratingNumber + " Stars");
    })
    // 注意:此处直接打印只会拿到初始值0,需要在用户点击星级后再调用ratingNumber才能拿到有效评分
})
注意事项

如果需要在其他业务逻辑里使用评分数值,要确保调用时机是在用户点击星级操作触发之后,否则拿到的会是初始的默认0值。

内容的提问来源于stack exchange,提问作者Tayyab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:42:01