コードには多くの問題があります。手始めに、さまざまなテキストフィールドの値を取得する行は正しくありません。
first_name=document.getElementById(first_name);
getElementById
文字列が必要です。文字列を渡すのではなく、。という名前のまだ定義されていない変数を渡しますfirst_name
。文字列にするには、引用符を付けてください。var
次に、変数のスコープに影響を与えるキーワードを使用していません。最後に、これら2つのエラーを修正しても、まだ値を取得しておらず、要素を取得しています-getElementById
を取得しますHTMLElementObject
。さらに、このオブジェクトを文字列として処理しようとします。
first_name!==""
現状では、first_nameは文字列ではなく、オブジェクトであるため、空の文字列と等しくなることはありません。すべてをまとめると、代わりに次のことが必要になります。
var first_name=document.getElementById('first_name').value;
これにより、IDが「first_name」のテキストフィールドの値が文字列として提供されます。
さらに、ifステートメントの括弧が多すぎます。
if ((first_name!=="")&&(last_name!=="")&&(username!=="")&&(category!="empty"))
代わりに、これらの括弧は必要ありません。
if (first_name !== "" && last_name !== "" && username !== "" && category!= "empty"){ }
// or my personal preference:
if (
first_name !== "" &&
last_name !== "" &&
username !== "" &&
category!= "empty"
){ }
最後に、インラインonchange
イベントを削除して、JavaScriptの割り当てに置き換えることをお勧めします。
document.getElementById('first_name').onchange = changingNow;
これは、イベントを適用する1つの方法にすぎません。詳細については、この回答を参照してください。
すべてを一緒に入れて:
var changingNow = function() {
var first_name = document.getElementById('first_name').value;
var last_name = document.getElementById('last_name').value;
var username = document.getElementById('username').value;
var category = document.getElementById('category').value;
var form1 = document.getElementById('form1');
if (
first_name !== "" &&
last_name !== "" &&
username !== "" &&
category!= "please choose a category"
){
// this line of code is not valid in regular JS...
//form1.process.disabled = false;
document.getElementById('tweet').value = 'I just voted for '+first_name+' '+last_name+' ('+username+')'+' in the '+category+' category!';
} else {
// this line of code is not valid in regular JS...
//form1.process.disabled = true;
document.getElementById('tweet').value = 'please complete the fields above!';
}
}
document.getElementById('first_name').onchange = changingNow;
document.getElementById('last_name').onchange = changingNow;
document.getElementById('username').onchange = changingNow;
document.getElementById('category').onchange = changingNow;
changingNow();
ここで試してみてください:http://jsfiddle.net/yzbWr/
ドキュメンテーション