2

onFocus3 つのフォーム フィールドのそれぞれで、onChangeおよびonClickイベントを使用することになっている宿題があります。各イベントは、フィールド名を関数に渡すことになっています。この関数は、イベントが発生したことを警告し、発生した警告の数をユーザーに知らせることになっています。私は先週答えを見つけようとしましたが、一貫して見つけることができたのは、onFocusイベントがテキストフィールドで使用されるべきではないということだけです (それは私の割り当てを変更しません)。私がこれまでに持っているコードは次のとおりです。

<SCRIPT LANGUAGE="JavaScript">
<!--

var numEvents = 0;
var field1 = ""; 
var field2 = ""; 
var field3 = "";

function clickedField(fieldId) {
    if (document.form1.field1.value = field1){ 
    events=runningTotal(1);
    alert("You have clicked Field 1. Alert Count = " + runningTotal(i) + ".");
    }
    if (document.form1.field2.value = field2){ 
    events=runningTotal(1);
    alert("You have clicked Field 2. Alert Count = " + runningTotal(i) + ".");
    }
    if (document.form1.field3.value = field3){ 
    events=runningTotal(1);
    alert("You have clicked Field 3. Alert Count = " + runningTotal(i) + ".");
    }
}

function changedField(fieldId) {
    if (document.form1.field1.value!= field1){ 
    events=runningTotal(1);
    alert("You have changed Field 1. Alert Count = " + runningTotal(i) + ".");
    }
    if (document.form1.field2.value!= field2){ 
    events=runningTotal(1);
    alert("You have changed Field 2. Alert Count = " + runningTotal(i) + ".");
    }
    if (document.form1.field3.value!= field3){ 
    events=runningTotal(1);
    alert("You have changed Field 3. Alert Count = " + runningTotal(i) + ".");
    }
}
/* 
function focusedField(fieldId) {
    if (document.form1.field1.value = field1){ 
    events=runningTotal(1);
    alert("You have focused on Field 1. Alert Count = " + runningTotal(i) + ".");
    }
    else if (document.form1.field2.value = field2){ 
    events=runningTotal(1);
    alert("You have focused on Field 2. Alert Count = " + runningTotal(i) + ".");
    }
    else if (document.form1.field3.value = field3){ 
    events=runningTotal(1);
    alert("You have focused on Field 3. Alert Count = " + runningTotal(i) + ".");
    } 
}*/

function runningTotal(i){
    numEvents += i;
    return numEvents;
}

// -->
</SCRIPT>

実際のコードではありませんが、必要なことを行っていないため、いくつかのエラーがあることはわかっています。. Alert Count = " + runningTotal(i) + "."と引数をアラートに追加する前は、フィールドを変更したときに通知されていました。

4

4 に答える 4

2

これらのJavaScript関数をトリガーするために次のコードが必要かどうかはわかりません

<input name="field1" id="field1" onfocus="focusedField(this.id)" onclick="clickedField(this.id)" onchange="changedField(this.id)"/>
<input name="field2" id="field2" onfocus="focusedField(this.id)" onclick="clickedField(this.id)" onchange="changedField(this.id)"/>
<input name="field3" id="field3" onfocus="focusedField(this.id)" onclick="clickedField(this.id)" onchange="changedField(this.id)"/>
于 2012-01-09T02:02:42.820 に答える
0
if (document.form1.field1.value = field1){ 

する必要があります

if (document.form1.field1.value == field1){ 
于 2012-01-09T02:05:20.733 に答える
0

まず、これらの関数を必要なイベントに割り当てるコードはどこにもありません。

次に、、、およびvarsが値に割り当てられていることはどこにもfield1見当たりfield2ませfield3ん。それと一緒に、あなたはフィールドの値をチェックしています、そしてとにかく、なぜあなたがそれをしているのかわかりません。

そして第三に、==同等性をテストするために使用する必要があります。ではありません=

于 2012-01-09T02:09:17.443 に答える
0

まず最初に:ifステートメントには代入演算子(=)ではなく比較演算子(==)が必要です。その後は

このようなものが機能します:

window.onload = function(){
    document.form1.field1.onclick = function(){
        changedField(this);
    }
}

itelfへの参照を関数に送信し、その値やIDなどにアクセスできます。イベントが割り当てられる前にフォームアイテムが存在することを確認するために、window.onloadの後に処理する必要があります。

于 2012-01-09T02:13:13.080 に答える