2016-06-24 4 views
0

私は時計の要素の上にあるボタンをクリックすると、それを午前から午後に変更するようにしています。私は多くの時計要素を持っていて、それぞれは自分のam/pmボタンに関連付けられています。ボタンのonclickイベントに別の要素のidを渡しますか?

<button class="button2" onclick="Clock.toAm("piechart0")">AM</button> 
<button class="button2" onclick="Clock.toPm("piechart0")">PM</button> 
<canvas id="piechart0" width="200" height="200"></canvas> 

を私のjavascriptとしてこれに伴い::ここに私が試したものです(piechart0はクロックとclock.jsは、私はそれのための私のjsを扱うところです)

Clock.toAm = function(id) { 
    var clock = document.getElementById(id); 
    clock.am = true; 
    for (var j = 0; j < 48; j++) { 
     clock.segments[j] = clock.amSegments[j]; 
     clock.updateDraw(j); 
    } 
} 

Clock.toPm = function(id) { 
    var clock = document.getElementById(id); 
    clock.pm = true; 
    for (var j = 0; j < 48; j++) { 
     clock.segments[j] = clock.pmSegments[j]; 
     clock.updateDraw(j); 
    } 
} 

しかし、私は、「属性を取得しますpiechart0はここでは許可されません "通知。私はここで間違っていますか/ボタンのonclick引数の引数に別のIDを渡すにはどうすればいいですか?

編集:引用の競合がある可能性があります。さて、「」引用を使用して、私はpiechart0への参照を取得しますが、実際のpiechart0変数がすべて定義され、一方、私が完了したとき:

var clock = document.getElementById(id); 

この要素のすべての変数が定義されていません。私は同じIDを使用しているので、なぜこれが当てはまるのかわからないのですか?

+1

を支えるにはシングルにするために二重引用符の1、.prop()を使用してお勧めします。あなたが '$( 'class2')を使わない理由は何ですか?click()'? – Assimilater

+0

HTML要素(HTMLCanvasElement)にカスタムプロパティを追加するのは良い方法ではありません。 – progysm

+0

引用符がないと動作しないものはありますか?それは同じエラーですか? – Assimilater

答えて

0

カップル提案:

これをデバッグするために、私はconsole.log(id)を挿入して、実際に通じなってきたかを見るでしょう。引用符の不一致をonclick="Clock.toPm('piechart0')"に置き換えたとすると、その値はうまくいくはずです。

あなたはこのjQueryとしてタグ付けしておりますので、私は.click()つまり、何かのように使用します。

HTML

<button id="btnPm">PM</button> 

をJavascriptを:clock.amについては

$('button#btnPm').click(function() { Clock.toPm('piechart0'); }); 

、私はわかりませんこのようなDOMオブジェクトを変更することができます。しかし確かに、それは落胆するでしょう。私は、すなわち$(clock).prop('am', true)

+0

のように、外側または内側の引用符を '' 'に変更することです。 do: var clock = document.getElementById(id); この要素の変数はすべて定義されていません。なぜ同じIDを使用しているのかわからないので、その要素をキャンバスとして正しく識別します#piechart0? – lgzambello

+0

'var clock'が定義されていないと言っているのですか?toPmがClockのメンバーではないというメッセージが表示されますか?具体的にするとより速く回答することができます – Assimilater

+0

明瞭さが失われて申し訳ありません。 var clock ISは "canvas#piechart0"と定義されていますが、すべての変数は未定義です。 piechart0のIDは "am = true;"です。しかし、var clockでは、 "canvas#piechart0"として定義されていても、それらの変数はすべて未定義です。 "am = undefined;" – lgzambello

0

変更onclickのあなたは、このjqueryのとタグ付けしている

<button class="button2" onclick='Clock.toAm("piechart0")'>AM</button> 
<button class="button2" onclick='Clock.toPm("piechart0")'>PM</button> 
関連する問題