我想在某些条件下比较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"
之后的值。
我该怎么做?语法怎么样?
非常感谢您的帮助。
答案 0 :(得分:9)
我建议您阅读JavaScript中可用的各种String
方法。
在这种情况下,您需要charAt
(以确定第0个字符是否为“v”)和substring
(或substr
)以获取{之后的部分{1}}。然后,您需要parseFloat
将其转换为数字。或者,作为bad syntax points out,你可以使用正则表达式(虽然如果你做的话,我不会完全按照他/她所做的那样去做,我希望进一步使用它),但这可能比必要的更复杂。
上面的链接符合规范,但可能很难。有很多书籍和网站可供学习JavaScript的基础知识。 Mozilla's MDN是一个不错的参考网站。
答案 1 :(得分: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);
}
答案 2 :(得分: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/
答案 3 :(得分: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');
}
}