1

私は HTML をいじり、SVG を操作してきました。練習として、javascript を使用してピタゴラスの定理を解き、三角形を 300h x 300w の領域に表示するページを作成しました。私の問題は、変数 " a" と変数 " "の違いが大きすぎるとb、比較 " if(a>b)" が適切に機能しないことだと思います。したがって、a=55andb=32または and でもa=5555完全に機能しb=5000ますが、そうするとa=1001、が よりも大きいb=55かのように実行されるように見えます。ba

<h2>Pythagorean theorem</h2>
<p>Enter Variable "a"<input id="vara" type="text"></p>
<p>Enter Variable "b"<input id="varb" type="text"></p>
<p><span id="a">a</span><sup>2</sup> + 
<span id="b">b</span><sup>2</sup> = 
<span id="c">c</span><sup>2</sup></p>

<script>
function pythagorean(){
var a=document.getElementById("vara").value;
var b=document.getElementById("varb").value;
var x=a * a + b * b;
var c=Math.sqrt(x);

if(a>b){
    ay=0
bx=b/a*300
}
else{
ay=300-(a/b*300)
bx=300
}

document.getElementById("a").innerHTML=a;
document.getElementById("b").innerHTML=b;
document.getElementById("c").innerHTML=c;
document.getElementById('trianglepoints').setAttribute("points",bx+",300 0,300 0,"+ay);
}

</script>

<svg id="triangle xmlns="http://www.w3.org/2000/svg" version="1.1" height="300" width="300">
<polygon id="trianglepoints" points=""
style="fill:red;stroke:black;stroke-width:1;">
</svg>
<br />

<button type="button" onclick="pythagorean()">calculate</button>
4

1 に答える 1

3

によって返されたStringelement.valueNumberにキャストしてください。

a = document.getElementById('vara').value;
a = +a;
-or-
a = Number(a);

それ以外の場合、比較a > bすると文字列比較が行われ、(最初の文字が最初に比較されます)'1001'よりも小さいです。'55'

于 2012-09-25T04:36:33.870 に答える