$.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/