table有几百行。每行都有一个车牌列。现在有若干车牌,怎么才能找到相对应的行,我以前是这样处理的。var veh =["车牌1","车牌2"];for(var i =0; i<veh.length;i++)
for(var j = 0; j<tb.rows.length;j++)
{
if(veh[i] ==tb.rows[j].cell[0].innerHTML)
{
//更新这一行的数据。
}
}注意这里的table有添加,修改,删除行的操作。
如果有五百台车,每次veh 的length > 50,客户端就处理不过来(也就是循环了<=500*50次)。而现在是每三秒执行一次。(反正就是这样处理效率很低)
现在想问的是得到‘车牌1’能不能迅速的得到它在table中的行的index而不是通过for循环去一个个比较。
--------------------------------------帅签分割线-------------------------------------------------
for(var j = 0; j<tb.rows.length;j++)
{
if(veh[i] ==tb.rows[j].cell[0].innerHTML)
{
//更新这一行的数据。
}
}注意这里的table有添加,修改,删除行的操作。
如果有五百台车,每次veh 的length > 50,客户端就处理不过来(也就是循环了<=500*50次)。而现在是每三秒执行一次。(反正就是这样处理效率很低)
现在想问的是得到‘车牌1’能不能迅速的得到它在table中的行的index而不是通过for循环去一个个比较。
--------------------------------------帅签分割线-------------------------------------------------
所以,你可以在输出的html的tr中加上车牌号的id<tr id='浙X010101'></tr>
这个时候就可以直接循环行,还不需要再循环列。找到tr时,就返回这个tr对象的rowIndex,就是所在行的索引了。
你可以 if(veh[i] ==tb.rows[j].cell[0].innerHTML)
{
//更新这一行的数据。
break; //退出这次的循环
}
在拿到innerHTML的时候 在 trim 一下 出错率会更小一些 ..
break;是必须的。所以我说了<=500*50
--------------------------------------帅签分割线-------------------------------------------------
<html>
<head>
<script src="jquery-dev.js" type="text/javascript"></script>
</head>
<body>
<table>
</table>
<input type="button" value="Query" onclick="query()" />
<script type="text/javascript">
var ids = [];
$(function(){
var rowCount = 100;
for(var i=0; i<rowCount; i++){
var number = parseInt(Math.random() * 10000);
var row = $('<tr><td>' + number + '</td></tr>');
$('table').append(row);
if(i%5===0) ids.push(number);
}
});
var query = function(){
for(var i=0; i<ids.length; i++){
$('td:contains("' + ids[i] + '")').css('color', 'red');
}
};
</script>
</body>
</html>
var query = function(){
var conditions = [];
for(var i=0; i<ids.length; i++){
conditions.push('td:contains("' + ids[i] + '")');
}
$(conditions.join(',')).css('color', 'red');
};
jquery就可以。很方便。 欢迎光临我的博客
if(!window.tableSort) {
window.tableSort = {};
}
if(!window.tableSort[sIndex]) {
var list = document.getElementById(id).getElementsByTagName('tr');
var len = list.length;
var temp = [];
for(var i = 0; i < len; i++) {
temp.push(list[i].getElementsByTagName('td')[sIndex - 1].innerHTML.replace('/(^\s*)|(\s*$)/g', ''));
}
window.tableSort[sIndex] = temp.join(',');
}
var sTemp = window.tableSort[sIndex];
var sTemp2 = sTemp.substr(0, sTemp.indexOf(str) - 1);
return sTemp2 == sTemp? -1 : sTemp2.length == 0? 0 : sTemp2.split(',').length;
} var veh = ['车牌1', '车牌2'];
for(each in veh) {
alert(searchIndex('table', veh[each], 1));
}
var veh = ['车牌1', '车牌2'];
for(each in veh) {
alert(veh[each]+'所在的行是'+theforever_csdn[veh[each]]);
}
var tempStr = tb.innerHTML;
var rowIndex = tempStr.split("车牌1")[0].split(/<TR>/g).length -2;
alert(rowIndex);
<table id="tb">
<tr><td>车牌2</td><td></td><td></td></tr>
<tr><td>车牌3</td><td></td><td></td></tr>
<tr><td>车牌4</td><td></td><td></td></tr>
<tr><td>车牌5</td><td></td><td></td></tr>
<tr><td>车牌1</td><td></td><td></td></tr>
<tr><td>车牌6</td><td></td><td></td></tr>
<tr><td>车牌7</td><td></td><td></td></tr>
<tr><td>车牌8</td><td></td><td></td></tr>
</table>这可以避免循环