<%
 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="&nbsp;<% = i %>" disabled></td>
<td><input type="text" style="width:100%" name="mc<% = i %>" id="Text42" ></td>
</tr> 
<%
Next
%>
1、将数据快速合并为document.all.mc.value=document.all.mc.value+'$' +document.all["mc"+i].value 但不包含重复的内容
2、问题是如何快速查找MC文本框是否有重复,并提示重复的行数

解决方案 »

  1.   

    document.all.mc.value=document.all.mc.value+'$' +document.all["mc"+i].value 每次都用$加了值进去,那么就在加值进去前先用INDEXOF函数查找一下有没有"$值$"存在,如果有就是重复了,不存进去,重复计数器加1。注意,按你那种写法,document.all.mc.value应先存一个“$”,以避免查找时可能出现的不准确情况,这个一试验就知道了。
      

  2.   

    3000处理还是很快的
    关键的地方是不要频繁的操作COM对象,在变量里拼装字符串就好了,否则每次修改value会导致界面刷新,那就是罪恶的根源。document.all.mc.value=document.all.mc.value+'$' +document.all["mc"+i].value
    修改为:
    var str = [];
    for(....) {
        str.push(document.all["mc"+i].value);
    }
    document.all.mc.value=str.join("$");
      

  3.   

    <!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>
        <script type="text/javascript">
            var val=[];
            var mc =[];
            var repeat=[];
            function setVal(o){
                var tr=o.parentNode.parentNode;
                val[tr.rowIndex]=o.value;
                setMc();
            }
            function setMc(){
                mc=[];
                repeat=[];
                for(var i=0;i<val.length;i++)
                    if(("$"+mc.join("$")+"$").indexOf("$"+val[i]+"$")==-1)mc.push(val[i]);
                    else {
                        var index=mc.indexOf(val[i]);
                        if(!repeat[index])repeat[index]=index;
                            repeat[index]+=" , "+(i+1)
                        
                    }
                document.getElementsByName("mc")[0].value=mc.join("$");
                if(repeat.length>0)alert("repeat:"+repeat.join("\n"));
            }
            
            Array.prototype.indexOf=function(o){
                for(var i=0;i<this.length;i++)
                    if(this[i]==o)return i+1;
                return -1;
            }
        </script>
    </head>
    <body>
    <table>
    <%  Dim i
        For i = 1 To 10%>
    <tr bgColor="#FFFFFF" ID="GridRow<% = i %>">
    <td><input type="text" style="width:100%" name="GridNo<% = i %>" id="Text41" readonly value="&nbsp;<% = i %>" disabled></td>
    <td><input type="text" style="width:100%" name="mc<% = i %>" id="Text42" onchange="setVal(this);"></td>
    </tr>  
    <%  Next%>
    </table>
    <input type="text" style="width:100%" name="mc">
    </body>
    </html>