プロが教えるわが家の防犯対策術!

下記サンプルで、trueになるべきところがfalseになります。なぜでしょうか。
このサンプルでは識別番号のラスト値のみを比較するものですが、
実際は複数の<dd>の値を比較します。
NO12「DE」-114 という1行の文章に複数の比較する対象が含まれる場合は、
1つの<dd>に<span>で囲い【NO12】、【「DE」】、【114】のそれぞれを比較の対象にしますが、
こういったやり方自体が間違っているのでしょうか。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
<title>サンプル</title>
</head>
<body>
<form action="#">
<fieldset>
<legend>識別番号のラスト値</legend>
<select name="sss" onchange="spl(this.form)">
<option value="50">50以下</option>
<option value="100">100以下</option>
<option value="150">150以下</option>
<option value="200">200以下</option>
</select>
</fieldset>
</form>
<dl>
<dt>名前</dt>
<dd>ジム</dd>
<dt>識別番号</dt>
<dd><p><span>NO12</span>「<span>DE</span>」-<span>114</span></p></dd>
</dl>
<dl>
<dt>名前</dt>
<dd>トム</dd>
<dt>識別番号</dt>
<dd><p><span>NO33</span>「<span>DR</span>」-<span>168</span></p></dd>
</dl>
<dl>
<dt>名前</dt>
<dd>エミリー</dd>
<dt>識別番号</dt>
<dd><p><span>NO8</span>「<span>AB</span>」-<span>93</span></p></dd>
</dl>
<script type="text/javascript">
function spl(f){
var selValue = f.sss.value;
var idID = document.getElementsByTagName('p');
var idLen = idID.length;
for(i=0; i<idLen; i++){
var spans = idID[i].getElementsByTagName('span');
var pawwar = spans[2].innerHTML;
if(pawwar<=selValue){
alert("true");
}else{
alert("false");
}
}
}
</script>
</body>
</html>

A 回答 (1件)

どんなプログラムの値にも「型」があります。


例の場合は、数値として期待しているところを文字列として認識しているのではないでしょうか。
分かりやすく言うと、電話番号の「0120」は、文字列であって数字ではありません。仮に「0120+1」とやっても、0121(足し算)にはならずに、01201(文字の連結)になります。同じように、文字列として認識されている変数に<(大なり)などの演算子を使っても意味をなしません。文字列として認識されている変数を数値に変換するには、Number()がいちばん手っ取り早いと思います。
    • good
    • 0
この回答へのお礼

<script type="text/javascript">
function spl(f){
var selValue = Number(f.sss.value);
var idID = document.getElementsByTagName('p');
var idLen = idID.length;
for(i=0; i<idLen; i++){
var spans = idID[i].getElementsByTagName('span');
var pawwar = Number(spans[2].innerHTML);

if(pawwar<=selValue){
alert("true");
}else{
alert("false");
}

}
}
</script>

このようにNumber()で型変換したらできました。
有難うございました。

お礼日時:2011/12/20 22:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!