※ ChatGPTを利用し、要約された質問です(原文:数値の比較で正しく評価されない理由)
数値の比較で正しく評価されない理由
このQ&Aのポイント
数値の比較で正しく評価されない理由について説明します。
サンプルのコードでは、識別番号のラスト値のみを比較していますが、実際は複数の値を比較する必要があります。
また、この比較の方法自体が間違っている可能性もあります。
下記サンプルで、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-transitional.dtd">
<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>
お礼
<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()で型変換したらできました。 有難うございました。