以下代码旨在更改一个字段的颜色:

<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>

最佳答案

在表单中添加一个ID,并使用它来引用ID

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

在DOM中使用表单索引是访问其元素的不可靠方法

关于javascript - 只有getElementsByName吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13620759/

10-11 23:37
查看更多