你的代码有很多问题。对于初学者,获取各种文本字段值的行是不正确的:
first_name=document.getElementById(first_name);
getElementById
需要一个字符串。您没有传递字符串,而是传递了一个尚未定义的变量,名为first_name
. 要使它成为一个字符串,请给出一些引号!其次,您没有使用var
关键字,这会影响变量的范围。最后,纠正了这两个错误,你仍然没有得到值,你得到了元素——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;
这只是应用事件的一种方式,有关更多信息,请参阅此答案。
把它们放在一起:
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/
文档