各位大虾帮忙解决的个问题,在线等, 谢谢了!有一个表格原始有一行,其中的一个td中有text ,text的onchange 属性起作用, 在js中动态添加了一行,但text的setAttribute("onchange","countWeight()")的时候不起作用源码如下: <%@ Page Language="VB" AutoEventWireup="false" CodeFile="MyKPIDetail3_T.aspx.vb" Inherits="MyKPIDetail3_T" %><!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">
<head runat="server">
    <title>无标题页</title>
    <style type ="text/css" >
        .td0{width:500px;}
        .td1{width:80px;}
        .td2{width:100px;}
        .td3{width:200px;}
        .td4{width:100px;}
    </style>
    <script language ="javascript" type ="text/javascript" >
    var linenum = 1
    var strvalue;
    var strtext;
    function Add_tr()
    {
        if (linenum ==1)
        {
            getoption ();
        }        
        linenum =linenum +1;
        var tableobj = document .getElementById ("table1");
        var trobj = document .createElement ("tr");
        // 添加td0
        //var tdobj0 = trobj .insertCell(0);
        var tdobj0 = document .createElement ("td");
        tdobj0 .setAttribute ("class","td0");
        var textareaobj0 = document .createElement ("textarea");
        textareaobj0.setAttribute ("id","ta_line"+linenum );
        textareaobj0.setAttribute ("name","ta_line"+linenum );
        textareaobj0 .setAttribute ("cols","35");
        textareaobj0 .setAttribute ("rows","2");
        tdobj0 .appendChild(textareaobj0 );
        trobj .appendChild (tdobj0 );
                
        // 添加td1
        //var tdobj1 = trobj .insertCell(0);
        var tdobj1 = document .createElement ("td");
        tdobj1 .setAttribute ("class","td1");
        var textobj1 = document .createElement ("input");
        textobj1.setAttribute ("id","tb_line"+linenum );
        textobj1.setAttribute ("name","tb_line"+linenum );
        textobj1.setAttribute ("runat","server");
        textobj1.setAttribute ("type","text");
        textobj1.setAttribute ("onchange","countWeight()");
        tdobj1 .appendChild(textobj1 );
        trobj .appendChild (tdobj1 );
        // 添加td2
        //var tdobj2 = trobj .insertCell(1);
        var tdobj2 = document .createElement ("td");
        tdobj2 .setAttribute ("class","td2");
        var lableobj2 = document .createElement ("span");
        lableobj2.setAttribute ("id","lb_line"+linenum );
        tdobj2 .appendChild(lableobj2 );
        trobj .appendChild (tdobj2 );
        // 添加td3
        //var tdobj3 = trobj .insertCell(2);
        var tdobj3 = document .createElement ("td");
        tdobj3 .setAttribute ("class","td3");
        var ddlobj3 = document .createElement ("select");
        ddlobj3.setAttribute ("id","ddl_line"+linenum );
        ddlobj3.setAttribute ("name","ddl_line"+linenum );
        tdobj3 .appendChild(ddlobj3 );
        trobj .appendChild (tdobj3 );
        // 添加td4
        //var tdobj4 = trobj .insertCell(3);
        var tdobj4 = document .createElement ("td");
        tdobj4 .setAttribute ("class","td4");
        var buttonobj4 = document .createElement ("input");
        buttonobj4.setAttribute ("id","bt_line"+linenum );
        buttonobj4.setAttribute ("name","bt_line"+linenum );
        buttonobj4 .setAttribute ("type","submit");
        buttonobj4 .setAttribute ("value","删除");
        tdobj4 .appendChild(buttonobj4 );
        trobj .appendChild (tdobj4 );
        
        //tableobj .appendChild (trobj );
        //if(document .all)tableobj .outerHTML = tableobj .outerHTML ;
        tableobj .firstChild .appendChild (trobj);
        setoption ("ddl_line"+linenum );
    }
    function getoption()
    {
        var sel = document .all["ddl_line1"];
        strvalue = new Array ();
        strtext = new Array ();
        for (var i=0;i<sel.length;i++)
        {
            strvalue .push(sel[i].value);
            strtext .push (sel[i].text);
        };
    };
    function setoption(obj)
    {
        var sel = document .all[obj];
        for (var i=0;i<strvalue .length;i++)
        {
            sel[i] = new Option(strtext [i] ,strvalue [i]);
        }
    };
    function countWeight()
    {
        alert(linenum );
        var WeightT = 0;
        for (var i=1 ;i<= linenum ;i++)
        {
            if (document .all["tb_line"+i].value == "" || document .all["tb_line"+i].value ==null)
            {            }
            else 
            {
                var weight = parseInt(document .all["tb_line"+i].value)
                if(weight<=100 && weight >0)
                {
                    WeightT += parseInt(document .all["tb_line"+i].value);
                }
                else
                {
                    alert ("权重必须是0到100之间的数字!");
                }
            }
        }
        document .all["lb_weight"].innerHTML = WeightT ;
    };
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table id ="table1" style="width: 100%;">
            <tr>
                <td class ="td0 ">
                    <textarea id="ta_line1" name ="ta_line1" runat ="server" cols="35" rows="2"></textarea>
                </td>
                <td class ="td1 ">
                    <input id="tb_line1" name ="tb_line1" runat ="server" type="text" onchange="countWeight()"/>
                </td>
                <td class ="td2 ">
                    <span  id="lb_line1" runat ="server" ></span>
                </td>
                <td class ="td3 ">
                    <select id="ddl_line1" name = "ddl_line1" runat ="server" >
                    </select>
                </td>
                <td class ="td4 ">
                    <input id="bt_line1" name ="bt_line1" runat ="server" type="button" value="删除" />
                </td>
            </tr>
        </table>
        <br /><br />
        <input type = "button" id ="bt_addtr" onclick ="Add_tr()" value="添加一行"/>
        <span id = "lb_weight"></span>
    </div>
    </form>
</body>
</html>

解决方案 »

  1.   

    setAttribute("onchange","countWeight()")

    document.getElementById("").onchange=function(){}
      

  2.   

    事件绑定时这么写的吧$('#foo').bind('click', function() {
      alert('User clicked on "foo."');
    });
    另外可以用live(type, [data], fn) 
    概述
    jQuery 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的也有效。这个方法是基本是的 .bind() 方法的一个变体。使用 .bind() 时,选择器匹配的元素会附加一个事件处理函数,而以后再添加的元素则不会有。为此需要再使用一次 .bind() 才行。$('.clickme').live('click', function() {
      alert("Live handler called."); 
    });