2012-11-29 45 views
0

下面的代碼意味着改變一個字段的顏色:只有getElementsByName?

<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>Untitled Document</title> 
    </head> 
    <body> 
    <form></form> 
    <form> 
     <input name="thisone" /> 
    </form> 
    <script language="javascript"> 
     var bkColor = "red"; 
     function getEvent(e){ 
     if(window.event != null) { 
      return event; 
     } 
     return e; 
     } 
     function setBKColor(e){ 
     e = getEvent(e); 
     var src = e.srcElement || e.target; 
     window.status="t"; 
     if(src != null) { 
      src.style.bkColor = src.style.backgroundColor; 
      src.style.backgroundColor = bkColor; 
     } 
     } 
     function reSetBKColor(e){ 
     e = getEvent(e); 
     var src = e.srcElement || e.target; 
     if(src != null) { 
      src.style.backgroundColor = src.style.bkColor; 
     } 
     } 
     function attachEvent(name,element,callBack) { 
     if (element.addEventListener) { 
      element.addEventListener(name, callBack,false); 
     } else if (element.attachEvent) { 
      element.attachEvent('on' + name, callBack); 
     } 
     } 
     function setListner(eve,func) { 
     var ele = document.forms[0].elements; 
     for(var i = 0; i <ele.length;i++) { 
      element = ele[i]; 
      if (element.name) { 
      switch (element.name) { 
       case 'thisone': 
       attachEvent(eve,element,func); 
      } 
      } 
     } 
     } 
     setListner("focus",setBKColor); 
     setListner("blur",reSetBKColor); 
    </script> 

然而,當其改變顏色有另一種形式的前場,代碼停止工作。所以目前HTML代碼可能看起來像這樣,以配合不便:

<name="thisone"> 
<form></form> 
<form></form> 

現在這段代碼可以工作。

但是如何使JS部分獨立於<form>,並且只依賴於文本字段的<Name>

回答

2

的ID添加到您的形式,並用它來refence它

function setListner(eve,func) { 
    var ele = document.getElementById("#formID").elements; 

使用DOM中的形式指數是訪問其元素的一種不可靠的方式

相關問題