<%
For i = 1 To 3000
%>
<tr bgColor="#FFFFFF" ID="GridRow<% = i %>">
<td><input type="text" style="width:100%" name="GridNo<% = i %>" id="Text41" readonly value=" <% = i %>" disabled></td>
<td><input type="text" style="width:100%" name="mc<% = i %>" id="Text42" ></td>
</tr>
<%
Next
%>
问题是如何快速查找MC文本框是否有重复,并提示重复的行数
For i = 1 To 3000
%>
<tr bgColor="#FFFFFF" ID="GridRow<% = i %>">
<td><input type="text" style="width:100%" name="GridNo<% = i %>" id="Text41" readonly value=" <% = i %>" disabled></td>
<td><input type="text" style="width:100%" name="mc<% = i %>" id="Text42" ></td>
</tr>
<%
Next
%>
问题是如何快速查找MC文本框是否有重复,并提示重复的行数
var b = "saaaaaaaaaabbskadakbb";
var c = b.spit("bb");
var length = c;
alert("c");//每行有多少个
<input type="button" value="检查重复" onclick="Test()">
<div id="show"></div><script type=text/javascript>
(function(){
var i = 0, str = '<table width=300px>';
while (++i < 3001)
str += '<tr bgColor="#FFFFFF">\
<td><input type="text" style="width:100%" id="Text41" readonly ></td>\
<td><input type="text" style="width:100%" name="mc" id="Text42"></td></tr>';
str += '</table>';
document.getElementById("show").innerHTML = str;
})();function Test(){
var hash = {}, t = new Date;
var obj = document.getElementsByName("mc");
for(var i = 0; !!obj[i]; i ++) hash[obj[i].value] = "";
for(var j in hash) i --;
alert("实际检测耗时" + [new Date - t] + "毫秒");
i == 0 && alert("这3000行MC文本框没有重复") || alert("这3000行MC文本框中有"+i+"行重复");
}
</script>
var mcNum = 0;
for(var i = 1; i <= 3000;i++ ){ var objMC = document.getElementByNames('mc' + i);
//如果有mc开头的文本框,加上其数目
mcNum += objMc.length > 0 ? objMc.length : 0;
}
alert('重复的MC文本框有' + mcNum + '个');
//检查重复行,并返回重复行号列表
function check(list){
var tmp={},rows=[];
for(var i=0;i<list.length;i++){
if(tmp[list[i]]) rows.push(i);
else tmp[list[i]]=1;
}
return rows;
}//测试
var list=[];
for(var i=0;i<3000;i++) list.push("字符串_"+Math.round(3000*Math.random()));var d1=new Date;
var rows=check(list); //获取所有重复行号
var d2=new Date;for(var i=0;i<rows.length;i++){
document.write(rows[i]+"<br>"); //打印出重复行号
}
alert("重复行数:"+rows.length+"\n耗时:"+(d2-d1)+"毫秒!");
</script>
<input type="button" value="检查重复的行及索引号" onclick="Test()">
<div style="width:500px">
<div id="show" style="float:left"></div>
<div id="prin"></div>
</div>
<script type=text/javascript>
(function(){
var i = 0, str = '<table id="tab" width=300px>';
while (++i < 3001)
str += '<tr bgColor="#FFFFFF">\
<td><input type="text" style="width:100%" id="Text41" readonly ></td>\
<td><input type="text" style="width:100%" value='+ Math.round(30000*Math.random()) +' name="mc'+i+'" id="Text42"></td></tr>';
str += '</table>';
document.getElementById("show").innerHTML = str;
})();function Test(){
var str = "重复的行索引号<br>", hash = {}, arr = [], t = new Date;
var obj = document.getElementById("tab").getElementsByTagName("input");
for(var i = 0; !!obj[i]; i ++) i % 2 != 0 && (!!hash[obj[i].value] ? arr.push(i) : (hash[obj[i].value] = "@"));
alert("这6000行中3000个MC文本框有"+arr.length+"行重复,检测耗时" + [new Date - t] + "毫秒");
for(var j = 0; !!arr[j]; j ++)
str += [(arr[j] - 1) >>> 1] + "<br>";
document.getElementById("prin").innerHTML = str;
}
</script>
<input type="button" value="检查重复的行及索引号" onclick="Test()">
<div style="width:500px">
<div id="show" style="float:left"></div>
<div id="prin"></div>
</div>
<script type=text/javascript>
(function(){
var i = 0, str = '<table id="tab" width=300px>';
while (++i < 3001)
str += '<tr bgColor="#FFFFFF">\
<td><input type="text" style="width:100%" id="Text41" readonly ></td><td><input type="text" style="width:100%" id="Text41" name="test"></td>\
<td><input type="text" style="width:100%" value='+ Math.round(30000*Math.random()) +' name="mc'+i+'" id="Text42"></td></tr>';
str += '</table>';
document.getElementById("show").innerHTML = str;
})();function Test(){
var str = "重复的行索引号<br>", hash = {}, arr = [], t = new Date;
var obj = document.getElementById("tab").getElementsByTagName("input");
for(var i = 0; !!obj[i]; i ++) i % 2 != 0 && (!!hash[obj[i].value] ? arr.push(i) : (hash[obj[i].value] = "@"));
alert("这6000行中3000个MC文本框有"+arr.length+"行重复,检测耗时" + [new Date - t] + "毫秒");
for(var j = 0; !!arr[j]; j ++)
str += [(arr[j] - 1) >>> 1] + "<br>";
document.getElementById("prin").innerHTML = str;
}
</script>
问题是只检查MC文本框,不检查test文本框怎么处理,谢谢