0

ある条件下で 2 つの値を比較したい。

$(".value1").text()$(".value2").text()始まる場合 、 (この場合は 0.1)) の数 < (この場合は 0.4)"v"かどうかを確認します。$(".value1").length$(".value1").length

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

まず、div の値が で始まるかどうかを確認し"v"、次に の後の値を比較します"v"

どうすればそれを行うことができ、構文はどのようになりますか?

あなたの助けに感謝します。

4

4 に答える 4

9

StringJavaScriptで利用できるさまざまなメソッドを読んでみることをお勧めします。

この場合、charAt(0番目の文字が「v」であるかどうかを確認するために)およびsubstring(またはsubstr)で、の直後の部分だけを取得する必要がありvます。次に、それを数値に変換する必要がありますparseFloat。または、悪い構文が指摘しているように、正規表現を使用することもできます(ただし、彼/彼女が行ったことを正確に行うことはできませんが、それをさらに進めたいと思います)が、それは必要以上に複雑になる可能性があります。

上記のリンクは仕様へのリンクですが、難しい場合があります。JavaScriptの基礎を学ぶために利用できる本やウェブサイトはたくさんあります。MozillaのMDNはまともなリファレンスWebサイトです。

于 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 に答える