0

我想在某些条件下比较 2 个值。

如果 $(".value1").text()$(".value2").text()以 开头"v",则检查$(".value1").length(在本例中为 0.1))的数量是否 < $(".value1").length(在本例中为 0.4)

<div class="value1">v0.1</div>
<div class="value2">v0.4</div>

首先,我想检查 div 的值是否以 开头"v",然后我想比较 . 之后的值"v"

我将如何做到这一点以及语法如何?

非常感谢您的帮助。

4

4 回答 4

9

我建议String您阅读 JavaScript 中可用的各种方法。

在这种情况下,您希望charAt(找出第 0 个字符是否为“v”)和substring(或substr)仅获取v. 然后你会想把parseFloat它变成一个数字。或者,正如糟糕的语法所指出的那样,您可以使用正则表达式(尽管如果您这样做,我不会完全按照他/她所做的,但我会更进一步),但这可能比必要的更复杂.

上面的链接是规范的,但这可能很难。有很多书籍和网站可用于学习 JavaScript 的基础知识。Mozilla 的 MDN是一个不错的参考网站。

于 2012-11-19T16:25:35.257 回答
2

这是一个如何从元素中获取字符串数据、将其转换为整数并进行比较的示例。http://jsfiddle.net/svcH9/1/

$(document).ready(function () {
    // get elements
    var v1 = $('.value1').text(),
        v2 = $('.value2').text();
    // check requirements
    if (isVersionString(v1) === true && isVersionString(v2) === true) {
        // replace the v and cast to float
        v1 = getVersion(v1);
        v2 = getVersion(v2);

        // test
        $('body').append(v1).append(v2);

        // simple compare
        if (v1 < v2) {
            alert('Value two is greater than value one');
        }
    }
});

function isVersionString(value) {
    return /^v[0-9\.]{0,}$/.test(value);            
}

function getVersion(value) {
    return parseFloat(value.replace('v', ''), 10);
}
于 2012-11-19T16:35:05.927 回答
1
  var value1 = $('.value1').text();
  var value2 = $('.value2').text();

  if (value1.indexOf('v') == 0 && value2.indexOf('v') == 0) {
    var version1 = parseFloat(value1.substring(1), 10);
    var version2 = parseFloat(value2.substring(1), 10);
    if (version1 > version2) {
      document.write(value1 + ' > ' + value2);
    }
    else if (version1 < version2) {
      document.write(value1 + ' < ' + value2);
    }
    else {
      document.write(value1 + ' == ' + value2);
    }
  }

一个工作示例:http: //jsfiddle.net/Kncf4/

于 2012-11-19T16:33:56.273 回答
0

正则表达式解决方案:

var val1 = $.trim($(".value1").text());
var val2 = $.trim($(".value2").text());
var hasV = (/^v/.test(val1) && /^v/.test(val2));

if (hasV) {

    var num1 = parseFloat(val1.replace(/v/, ''));
    var num2 = parseFloat(val2.replace(/v/, ''));

    if (num1 < num2) {
        alert('yes');
    }
}
于 2012-11-19T16:28:54.220 回答