javascript - 如果程序的当前版本高于我的版本,如何显示 DIV?

标签 javascript jquery html css github

$.getJSON("https://api.github.com/repos/theinfection/screencalculator.kdapp/contents/resources/version", function(data) {
    var currentVersion = decode64(data.content);

    $.get('./resources/version', function(dataVersion){
        var myVersion = dataVersion;

        if (currentVersion > myVersion) {
            $('.update').show();
        }
    });
});

代码解释

首先,我在我的 GitHub 存储库中获取了一个名为“version”的文件的内容(该文件中写有“1.4.3”)。然后,由于 GitHub 对文件内容进行了 base64 编码,我用另一个 JS 文件对其进行解码。这会将“currentVersion”变量设置为 1.4.3。

接下来,我调用服务器上的“版本”文件(其中写入 1.4.2)。这会将“myVersion”变量设置为 1.4.2。

从那里,我比较了两者。如果 currentVersion 大于 myVerison,它会显示更新 DIV(在 CSS 中默认设置为“display:none;”)。

问题

当两个变量相等时,DIV 仍然显示。

问题

我应该怎么做才能避免这种情况发生?我究竟应该如何使用 else 和 else if 语句来完成我想要的?

提前致谢!

最佳答案

看起来您的问题可能是 1.4.2 和 1.4.3 不是数字,而是表示为字符串。您需要添加一些逻辑,例如按句点拆分字符串并检查子版本。

这是一篇关于将版本号与 JS 进行比较的帖子,可能会解决您的问题。

How to compare software version number using js? (only number)

编辑

您可以使用我链接的帖子中的方法对您的版本进行比较

function version_compare(curVersion, myVersion) {
    var v1parts = curVersion.split('.');
    var v2parts = myVersion.split('.');

    for (var i = 0; i < v1parts.length; ++i) {
        if (v2parts.length == i) {
            return false;
        }

        if (v1parts[i] == v2parts[i]) {
            continue;
        }
        else if (v1parts[i] > v2parts[i]) {
            return false;
        }
        else {
            return true;
        }
    }

    if (v1parts.length != v2parts.length) {
        return true;
    }

    return false;
}

$.getJSON("https://api.github.com/repos/theinfection/screencalculator.kdapp/contents/resources/version", function(data) {
    var currentVersion = decode64(data.content);

    $.get('./resources/version', function(dataVersion){
        var myVersion = dataVersion;

        if (!version_compare(currentVersion,myVersion)) {
            $('.update').show();
        }
    });
});

我稍微修改了方法以返回一个 bool 而不是版本较大的字符串。

关于javascript - 如果程序的当前版本高于我的版本,如何显示 DIV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16847021/

相关文章:

javascript - 需要用图像替换 innerText 以表示圆点和十字

javascript - 如何知道是否加载了 JavaScript(脚本)?

jquery - 通过包含字符串的 data-attr 过滤 div

javascript - 在滚动时缩小和更改背景导航栏

html - 如何在跨度中的每个换行符上添加 padding-left 和 right

javascript - Node.js - 从 MySQL 查询返回值

javascript - 目标键从 json 获取数据

php - 在表中显示 AJAX 响应

jquery - 为什么 $(elem).data() 有效但 jQuery.data() 不起作用?

javascript - 提交搜索不会将我发送到 javascript 变量中指定的页面