내 자바 스크립트 코드를 단순화 할 수있는 방법이 있습니까?자바 스크립트 단순화 - Onclick, Onblur, Onfocus - 양식
그것은 작동하지만 나는 분명히 내 기본 자바 스크립트 기술을 분명히 보여주는 것을 줄이는 방법이 있어야하며, 물론 내 이해를 향상 시키려고 노력하고있다.
내 HTML 코드 단순한 형태 :
<div>
<form action="">
<input type="text" name="firstname" id="un1" value="First Name"/>
<input type="text" name="surname" id="un2" value="Surname" />
<input type="text" name="username" id="un3" value="Email Address"/>
<input type="button" value="Register!" />
</form>
</div>
내 자바 스크립트 코드 (방해) :
window.onload = function(){
//Field Manoeuvre1
document.getElementById("un1").onclick = fieldClear1;
document.getElementById("un1").onfocus = fieldClear1;
document.getElementById("un1").onblur = fieldReplace1;
//Field Manoeuvre2
document.getElementById("un2").onclick = fieldClear2;
document.getElementById("un2").onfocus = fieldClear2;
document.getElementById("un2").onblur = fieldReplace2;
//Field Manoeuvre3
document.getElementById("un3").onclick = fieldClear3;
document.getElementById("un3").onfocus = fieldClear3;
document.getElementById("un3").onblur = fieldReplace3;
}
//Field Manoeuvre1
function fieldClear1(){
if(document.getElementById("un1").value == "First Name"){
document.getElementById("un1").value = "";
}
}
function fieldReplace1(){
if(document.getElementById("un1").value == ""){
document.getElementById("un1").value = "First Name";
}
}
//Field Manoeuvre2
function fieldClear2(){
if(document.getElementById("un2").value == "Surname"){
document.getElementById("un2").value = "";
}
}
function fieldReplace2(){
if(document.getElementById("un2").value == ""){
document.getElementById("un2").value = "Surname";
}
}
//Field Manoeuvre3
function fieldClear3(){
if(document.getElementById("un3").value == "Email Address"){
document.getElementById("un3").value = "";
}
function fieldReplace3(){
if(document.getElementById("un3").value == ""){
document.getElementById("un3").value = "Email Address";
}
}
감사합니다. @Tibos. 이상 적으로는 모든 브라우저에서 호환되는 javascript를 배우려고합니다. 솔루션 2가이를 달성합니까? 그리고 EventListener를 사용하기 때문에 모든 브라우저에서 솔루션 1이 작동하지 않습니까? – Tez
예, 예. IE는 addEventListener 대신에 attachEvent를 사용합니다. querySelectorAll은 IE7에서도 작동하지 않습니다. – Tibos
불행히도 솔루션 2가 나를 위해 작동하지 않는 것 같습니다. 필드를 클릭하면 현재 값이 사라지지 않고 필드가 비어 있고 클릭 한 후 필드 값이 '값'이됩니다. : – Tez