<script type="text/javascript">

    var oldv;        function test() {
            var nDiv = document.getElementById("div1");
            if (window.attachEvent) {
                var nInput;
                for (var i = 0; i < nDiv.getElementsByTagName("input").length; i++) {
                    nInput = nDiv.getElementsByTagName("input")[i];
                    
                    nInput.attachEvent("onfocus", function (ev) {
                           var target  = ev.srcElement; 
                           oldv = target.value;
                           var  st  =  target.getAttribute('style');
                           st.color = "Black";
                           
                           target.value = ""; });
                
                    nInput.attachEvent("onblur", function (ev) {
                     var target  = ev.srcElement; 
                        if (target.value == "") {
                            target.value = oldv;
                            var  st  =  target.getAttribute('style');
                            st.color = "Gray";
                            
                        }
                    });
                }
            }
            else {
                alert("2");
            }        }

</script>

解决方案 »

  1.   

    因为你事件里使用的对象是循环里的nInput最后的一次赋值,当然是第五个了。
    你应该通过传入的事件参数获取触发事件的对象。
    随便帮你改了下,你这代码只能在IE下运行。
      

  2.   

    // 通用代码
    <script type="text/javascript">
    var oldv = "";

    function onfocusHandler(e) {
    var ev = e || window.event;
    var elt = ev.target || ev.srcElement;

    oldv = elt.value;
    elt.style.color = "Black";
    elt.value = "";
    }
      
    function onblurHandler(e) {
    var ev = e || window.event;
    var elt = ev.target || ev.srcElement;

    if (elt.value == "") {  
    elt.value = oldv;
    elt.style.color = "Gray";    
    }
    }
      
    function test() {
    var nDiv = document.getElementById("div1");
    var inputs = nDiv.getElementsByTagName("input");
      
    for ( var i = 0; i < inputs.length; i++) {
    var input = inputs[i];
    if (input.addEventListener) {
    input.addEventListener("focus", onfocusHandler, false);
    input.addEventListener("blur", onblurHandler, false);
    } else if (input.attachEvent) {
    input.attachEvent("onfocus", onfocusHandler);
    input.attachEvent("onblur", onblurHandler);
    } else {
    alert("error");
    }
    }
    }
    </script>