首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

超简单的有关问题.动态添加事件

2012-04-22 
超简单的问题..动态添加事件进行动态添加的时候,进循环..获得焦点和失去焦点的方法都能加进去.但是attachE

超简单的问题..动态添加事件
进行动态添加的时候,进循环..获得焦点和失去焦点的方法都能加进去.

 但是attachEvent里面function里的nInput总是对应nDiv.getElementsByTagName("input")[5];

JScript code
<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 () {                           oldv = nInput.value;                            nInput.style.color = "Black";                            nInput.value = ""; });                                    nInput.attachEvent("onblur", function () {                        if (nInput.value == "") {                            nInput.value = oldv;                            nInput.style.color = "Gray";                        }                    });                }            }            else {                alert("2");            }        }           </script>

C# code
    <form runat="server" id="form1">    <div id="div1">        <table>            <tr>                <td align="right">用户名:</td>                <td><input id="Text1" type="text"  value="USER NAME" style="color:Gray"  /></td>            </tr>            <tr>                <td align="right">昵称:</td>                <td><input id="Text2" type="text"  value="NIC NAME"  style="color:Gray"  /></td>            </tr>            <tr>                <td align="right">密码:</td>                <td><input id="Text3" type="text"  value="PASSWORD" style="color:Gray"  /></td>            </tr>            <tr>                <td align="right">确认密码:</td>                <td><input id="Text4" type="text"  value="CONFIRM PASSWORD"  style="color:Gray"  /></td>            </tr>            <tr>                <td align="right">邮箱:</td>                <td><input id="Text5" type="text"  value="EMAIL" style="color:Gray"  /></td>            </tr>            <tr>                <td align="right">电话:</td>                <td><input id="Text6" type="text"  value="TELEPHONE"  style="color:Gray"  /></td>            </tr>            </table>    </div>        <table>             <tr>                <td><input id="Button1" type="button" value="提交" /></td>                <td colspan = "30"></td>                <td><input id="Button2" type="button" value="返回" /></td>            </tr>        </table>   </form>


[解决办法]
JScript code
// 通用代码<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> 


[解决办法]
回答之前,先批下楼主:自己没有解决,怎么能说是超简单的问题?
另:你的代码存在的问题
JS兼容性不好,在某些浏览器下无效。
样式与内容没有分离,最好不要使用行内样式,取而代之的是外部css文件。
我使用jQuery来解决你的问题,在IE和FF下都经过了测试,代码见下面

HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">        <head>        <title>jQuery选择器</title>                 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />        <style type="text/css">            .black{color:black;}            .gray{color:gray;}        </style>        <script type="text/javascript" src="jquery-1.6.1.min.js"></script>        <script type="text/javascript">            (function($){                $(function(){                    $("#div1 input.gray").focus(function(){                        $(this).attr("defaultvalue",$(this).attr("defaultvalue")?$(this).attr("defaultvalue"):$(this).attr("value")).removeClass("gray").addClass("black");                    });                    $("#div1 input.gray").blur(function(){                        $(this).attr("value",$(this).attr("value")==""?$(this).attr("defaultvalue"):$(this).attr("value")).removeClass("black").addClass("gray");                    });                });            })(jQuery);        </script>    </head>    <body>        <form runat="server" id="form1">            <div id="div1">                <table>                    <tr>                        <td align="right">用户名:</td>                        <td><input id="Text1" type="text" value="USER NAME" class="gray" /></td>                    </tr>                    <tr>                        <td align="right">昵称:</td>                        <td><input id="Text2" type="text" value="NIC NAME" class="gray" /></td>                    </tr>                    <tr>                        <td align="right">密码:</td>                        <td><input id="Text3" type="text" value="PASSWORD" class="gray" /></td>                    </tr>                    <tr>                        <td align="right">确认密码:</td>                        <td><input id="Text4" type="text" value="CONFIRM PASSWORD" class="gray" /></td>                    </tr>                    <tr>                        <td align="right">邮箱:</td>                        <td><input id="Text5" type="text" value="EMAIL" class="gray" /></td>                    </tr>                    <tr>                        <td align="right">电话:</td>                        <td><input id="Text6" type="text" value="TELEPHONE" class="gray" /></td>                    </tr>                </table>            </div>            <table>                <tr>                    <td><input id="Button1" type="button" value="提交" /></td>                    <td colspan = "30"></td>                    <td><input id="Button2" type="button" value="返回" /></td>                </tr>            </table>        </form>    </body></html> 

热点排行