不知道对大侠们来说难不难,我是不会的,特来请教

daqi2010 2010-01-07 09:38:05
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>
...全文
173 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcwtitxu 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 daqi2010 的回复:]
再请教最后一个问题:如何判断某一字符串(如:$user_name$在页面是否存在。谢谢了
[/Quote]

试试

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);
}
daqi2010 2010-01-11
  • 打赏
  • 举报
回复
var str_name="张小,李四,王五";
var str_age="21岁,,18岁";
var str_money="1000.00,1500.00,2000.00";
如果var str_age="21岁";
就只能显示一行。
再请教最后一个问题:如何判断某一字符串(如:$user_name$在页面是否存在。谢谢了
wcwtitxu 2010-01-11
  • 打赏
  • 举报
回复
后面加这句:tab.rows[1].parentNode.removeChild(tab.rows[1]);
daqi2010 2010-01-11
  • 打赏
  • 举报
回复
非常感谢君当如狼:
第二行<tr> <td>$id$ </td> <td>$name$($age$) </td> <td>$money$ </td> </tr>
如何删除呢?
再请教最后一个问题:如何判断某一字符串(如:$user_name$在页面是否存在。谢谢了
wcwtitxu 2010-01-11
  • 打赏
  • 举报
回复
<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> </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 = " "; });
}
for (var i=0; i<rowCount; i++) addRow(i);
for (var i=0,length=(5-rowCount%5)%5; i<length; i++) insertBlankRow(i);
}();
</script>

daqi2010 2010-01-10
  • 打赏
  • 举报
回复
谢谢君当如狼:
(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>
如何将数据插在第二行之后。
谢谢!谢谢!谢谢!

wcwtitxu 2010-01-07
  • 打赏
  • 举报
回复

<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>
Inpool 2010-01-07
  • 打赏
  • 举报
回复
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>

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧