0

関数 draw_integer(n,s,x,y,plotx) があり、座標 (x,y) でサイズ s の HTML5 キャンバスに整数 ,n を描画します。別の関数 draw_num() 内でこの関数を次のように呼び出しています。 ( plot0
、number、size はそれぞれキャンバスの ID、number & size 入力フィールド、関数 drawum() は onclick イベントでトリガーされます。)

function drawnum() {
    var n = document.getElementById('number').value;
    var s = document.getElementById('size').value;
    console.debug(n,s);
    draw_integer(n,s,100,100,plot0);   // this  doesn't get executed
    }   

function draw_integer(n,s,x,y,plotx){ //lots of code }

drawum の下で呼び出されている draw_integer 関数は実行されません。私が特定できない問題は何ですか。

console.debug() を使用すると、ユーザーが入力した数値とサイズの適切な値が返されます。また、draw_integer(n,s,100,100,plot0) の代わりに draw_integer(3,100,100,100,plot0) (サイズ 100 の番号 3 を描画) を使用した場合も同様です。動作します。

つまり、変数 n と s を drawum() から draw_integer() に渡すときにエラーが発生するということです。

これは変数のローカル スコープが原因ではないかと考えて、これを試してみました。

var n = document.getElementById('number').value;
var s = document.getElementById('size').value;

function drawnum() {
console.debug(n,s);
draw_integer(n,s,100,100,plot0);   // this  doesn't get executed
}   

function draw_integer(n,s,x,y,plotx){ //lots of code }

しかし、それもうまくいきませんでした。

この問題を解決するためのより良い方法を教えてください。

4

1 に答える 1

1
var n = document.getElementById('number').value;
var s = document.getElementById('size').value;

上記の変数は数値ではなく文字列ですnsparseFloat または parseInt を使用して変換する必要があります。

var n = parseInt(document.getElementById('number').value, 10);
var s = parseInt(document.getElementById('size').value, 10);
于 2012-10-25T14:00:01.123 に答える