私の関数は、ドキュメント内のすべてのフォームを繰り返し、onclick関数をフォームの各 'calculate'要素にバインドすることになっています。問題は、いずれかのクリックイベントで実行される関数が、ループ内の最後のiのコンテキストで実行されることです。ここで フォームの反復関数が正しく動作しない
は、私が使用しているJavaScriptのである:window.onload = function(){
calculateSavings();
}
function calculateSavings(){
for (i = 0; i < document.forms.length; i++) {
var e = document.forms[i];
e.calculate.onclick = function() {
var hours = e.hours.value;
var rate = e.rate.value;
alert(hours * rate);
}
}
}
をそしてここでそれが接続されているHTMLである:私はこれは本当に基本的な質問であると確信しているが、
<!doctype html>
<html>
<body>
<form>
<label for="hours">Hours: </label><input type="text" id="hours" name="hours">
<label for="rate">Rate: </label><input type="text" id="rate" name="rate">
<input type="button" name="calculate" value="Calculate">
<div id="savings"></div>
</form>
<form>
<label for="hours">Hours: </label><input type="text" id="hours" name="hours">
<label for="rate">Rate: </label><input type="text" id="rate" name="rate">
<input type="button" name="calculate" value="Calculate">
<div id="savings"></div>
</form>
</body>
</html>
解決策は、この時点で私を完全に逃しています。 http://jsfiddle.net/KcNWy/
あなたはjQueryを使用していますか? DOM操作を楽にするでしょう。 –
すべてのフォームのすべての異なる要素は、同じID /フォームを持っていますか? –
@meder正直言って、私はむしろjQueryを避けるでしょう。 innerHTMLステートメントを追加するだけでなく、ここで見ている小さなJavaScriptは、私がページ上で使用するすべてのものです。 – Moses