var str_name="张小,李四,王五";
var str_age="21岁,,18岁";
var str_money="1000.00,1500.00,2000.00";
<table>
<tr><td>序号</td><td>姓名及年龄</td><td>工资</td></tr>
<tr><td>$id$</td><td>$name$($age$)</td><td>$money$</td></tr>
</table>
检索表格元素,
如果存在$name$,则将字符串str_name添加表格,
如果存在$age$,则将字符串str_age添加表格,
如果存在$money$,则将字符串str_money添加表格,
如果存在$id$,则自动生成序号如1,2,3...
最终形成
<table>
<tr><td>序号</td><td>姓名及年龄</td><td>工资</td></tr>
<tr><td>1</td><td>张小(21岁)</td><td>1000.00</td></tr>
<tr><td>2</td><td>李四()</td><td>1500.00</td></tr>
<tr><td>3</td><td>王五(18岁)</td><td>2000.00</td></tr>
</table>

解决方案 »

  1.   

    var str_name="张小,李四,王五"; 
    var str_age="21岁,,18岁"; 
    var str_money="1000.00,1500.00,2000.00"; names = str_name.split(",");
    ages = str_age.split(",");
    moneys = str_money.split(",");
    trs = document.getElementById("table1").getElementsByTagName("tr");for(var i=0;i<trs.length;i++){
        trs[i].innerHTML = trs[i].innerHTML.replace("$name$",names[i])
                                           .replace("$age$",ages[i])
                                           .replace("$money$",moneys[i])
                                           .replace("$id$",i+1);
    }
    <table id="table1"> 
    <tr> <td>序号 </td> <td>姓名及年龄 </td> <td>工资 </td> </tr> 
    <tr> <td>$id$ </td> <td>$name$($age$) </td> <td>$money$ </td> </tr> 
    </table> 
      

  2.   


    <script>
    var str_name="张小,李四,王五"; 
    var str_age="21岁,,18岁"; 
    var str_money="1000.00,1500.00,2000.00"; 
    </script><table border="1"> 
    <tr> <td>序号 </td> <td>姓名及年龄 </td> <td>工资 </td> </tr> 
    <tr> <td>$id$ </td> <td>$name$($age$) </td> <td>$money$ </td> </tr> 
    </table> <script>
    Array.prototype.forEach = function(action, scope) {
    for (var i=0; i<this.length; i++) action.call(scope, this[i], i, this);
    return this;
    };
    function toArray(list, selector) {
    var ary = [];
    Array.prototype.forEach.call(list, function(item) { ary.push(item); });
    return ary;
    };
    function escapeHTML(s) {
    with (document.createElement("div")) {
    appendChild(document.createTextNode(s));
    return innerHTML;
    }
    }
    !function() {
    var _id=0, rowCount=0;
    var functions = { id: function() { return ++_id; } };
    "name|age|money".split("|").forEach(function(name) {
    var datas = window["str_" + name].split(",");
    rowCount = datas.length;
    functions[name] = function(i) { return datas[i]; };
    }); var tab = document.getElementsByTagName("table")[0];
    var tcs = toArray(tab.rows[1].cells);
    function addRow(rowIndex) {
    var row = tab.insertRow(-1);
    tcs.forEach(function(cell) {
    var newCell = row.insertCell(-1);
    newCell.innerHTML = cell.innerHTML.replace(/\$(\w+)\$/g, function($0, $1) {
    return escapeHTML(functions[$1](rowIndex));
    });
    });
    }
    for (var i=0; i<rowCount; i++) addRow(i);
    tab.rows[1].parentNode.removeChild(tab.rows[1]);
    }();
    </script>
      

  3.   

    谢谢君当如狼:
    (1)如果我想添加的行数是5的倍数,应该在上面的基础上如何修改,
    如当前只添加了3行数据,不足五行,在后面添加两空行。
    如当前添加了6行数据,就在后面添加4空行,
    总之是五的倍数。
    (2)
    如果表格变成下面的
    <table> 
    <tr> <td>序号 </td> <td>姓名及年龄 </td> <td>工资 </td> </tr> 
    <tr> <td>$id$ </td> <td>$name$($age$) </td> <td>$money$ </td> </tr> 
    <tr> <td>合计</td> <td> </td> <td>FFFF</td> </tr> 
    -----
    </table> 
    如何将数据插在第二行之后。
    谢谢!谢谢!谢谢!
      

  4.   

    <script> 
    var str_name="张小,李四,王五"; 
    var str_age="21岁,,18岁"; 
    var str_money="1000.00,1500.00,2000.00"; 
    </script>
     
    <table border="1"> 
    <tr><td>序号</td><td>姓名及年龄</td><td>工资</td></tr> 
    <tr><td>$id$</td><td>$name$($age$)</td><td>$money$</td></tr> 
    <tr><td>合计</td><td>&nbsp;</td><td>FFF</td></tr> 
    </table> 
     
    <script> 
    Array.prototype.forEach = function(action, scope) {
    for (var i=0; i<this.length; i++) action.call(scope, this[i], i, this);
    return this;
    };
    function toArray(list, selector) {
    var ary = [];
    Array.prototype.forEach.call(list, function(item) { ary.push(item); });
    return ary;
    };
    function escapeHTML(s) {
    with (document.createElement("div")) {
    appendChild(document.createTextNode(s));
    return innerHTML;
    }
    }
    !function() {
    var _id=0, rowCount=0;
    var functions = { id: function() { return ++_id; } };
    "name|age|money".split("|").forEach(function(name) {
    var datas = window["str_" + name].split(",");
    rowCount = datas.length;
    functions[name] = function(i) { return datas[i]; };
    });
     
    var tab = document.getElementsByTagName("table")[0];
    var tcs = toArray(tab.rows[1].cells);
    function addRow(rowIndex) {
    var row = tab.insertRow(tab.rows.length-1);
    tcs.forEach(function(cell) {
    var newCell = row.insertCell(-1);
    newCell.innerHTML = cell.innerHTML.replace(/\$(\w+)\$/g, function($0, $1) {
    return escapeHTML(functions[$1](rowIndex));
    });
    });
    }
    function insertBlankRow() {
    var row = tab.insertRow(tab.rows.length-1);
    tcs.forEach(function(cell) { row.insertCell(-1).innerHTML = "&nbsp;"; });
    }
    for (var i=0; i<rowCount; i++) addRow(i);
    for (var i=0,length=(5-rowCount%5)%5; i<length; i++) insertBlankRow(i);
    }();
    </script>
      

  5.   

    非常感谢君当如狼:
    第二行<tr> <td>$id$ </td> <td>$name$($age$) </td> <td>$money$ </td> </tr> 
    如何删除呢?
    再请教最后一个问题:如何判断某一字符串(如:$user_name$在页面是否存在。谢谢了
      

  6.   

    后面加这句:tab.rows[1].parentNode.removeChild(tab.rows[1]);
      

  7.   

    var str_name="张小,李四,王五"; 
    var str_age="21岁,,18岁"; 
    var str_money="1000.00,1500.00,2000.00"; 
    如果var str_age="21岁"; 
    就只能显示一行。
    再请教最后一个问题:如何判断某一字符串(如:$user_name$在页面是否存在。谢谢了
      

  8.   


    试试RegExp.escape = function(str) {
    return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
    };function test(str) {
    var html = document.body.innerHTML;
    html = html.replace(/<script\b[^>]*>[\d\D]*?<\/script>/ig, '');
    html = html.replace(/<style\b[^>]*>[\d\D]*?<\/style>/ig, '');
    return new RegExp(RegExp.escape(str)+"(?![^<]*>)").test(html);
    }