作为参数传递给函数Javascript
问题描述:
我有下面的HTML表单,并且Javascript用于验证HTML表单,所以在文本字段下面有一个隐藏的P元素来显示它上面的字段中是否有任何错误, (fn文本字段)上设置的基于事件名称(ID = fn)字段中的输入触发并隐藏P(ID = fnp)元素的键盘事件此代码工作正常,但我希望它是动态的,这样我就不会必须一次又一次为每个文本字段编写相同的代码,我想调用norml函数并将参数传递到norml函数(元素名称),以便它可以对每个文本字段执行相同的操作,但此方法不是工作:任何人都想引导我,我在这里做错了什么。作为参数传递给函数Javascript
这就是我想要做这不工作:
document.getElementById("fn").onkeyup = norml(pass an element name);
function norml(value received)
document.getelementbyID(received element ID name).color = red;
例:
function norml(dx, dxx) // receives a value as argument that is an element ID
{
dx.style.borderColor = '#d6d6d6';
dx.style.color = '#000000';
dxx.style.innerHTML = '';
dxx.style.visibility = 'hidden';
}
这就是工作,但将不得不做了每个文本字段分别
function norml()
{
document.getElementById("fn").style.borderColor = '#FF0000';
document.getElementById("fn").style.color = '#FF0000';
document.getElementById("fnp").style.borderColor = '#FF0000';
document.getElementById("fnp").style.innerHTML = '';
document.getElementById("fnp").style.visibility = 'hidden';
}
function validate() {
var errmsg = "";
var result = true;
var fname = document.getElementById("fn").value;
if (!fname.match(/^[a-zA-Z]+$/))
{
document.getElementById("fn").style.borderColor = '#FF0000';
document.getElementById("fn").style.color = '#FF0000';
document.getElementById("fnp").style.backgroundColor = 'lightpink';
document.getElementById("fnp").style.visibility = 'visible';
document.getElementById("fnp").innerHTML = "Please enter first name in alphabets";
document.getElementById("fn").onkeyup = norml;
return false;
}
if (errmsg != ""){ //only display message box if there is something to show
alert(errmsg);
}
}
function init()
{
var formData = document.getElementById("enqForm");
formData.onsubmit = validate;
}
window.onload = init;
<!DOCTYPE html>
<html lang="en">
<head>
<script src="scripts.js"></script>
<title></title>
</head>
<body id="enquire">
<section id="form">
<div>
<form id="enqForm" method="post">
<div class="formobj">
<div id="enquiry"><h1></h1></div>
<input id="fn" type="text" name="firstname" placeholder="First Name *" />
<input id="ln" type="text" name="lastname" placeholder="Last Name *" />
<p id="fnp" type="hidden"></p>
<p id="lnp" type="hidden"></p>
<input id="sendbutton" type="submit" value="Enquire" />
</div>
</form>
</div>
</section>
</body>
</html>
谢谢..
答
除其他问题,主要的一个是,你设置(不确定)结果在.onkeyup
物业打电话norml(dx, dxx)
的,而不是通过一个函数引用:
dx.onkeyup = function() {
norml(dx, dxx);
}
其他问题包括:
- 一再呼吁,在获得相同的元素,在
- ,然后重复调用该尊重元素的样式对象
- 使用DOM0
.onXXX
代替DOM3addEventListener
爵士的代码是不完整的,它只是测试代码和我是一个初学者...但由于任何方式... – TryllZ