最笨的方法是用对象的键值对做标记,如:
var arr=[1,2,3,4,5,6,4]function check(data){//data一定是数组
if(!data) data=[]
return data
if(data.length==0) return data
var _obj={}//用于标记
var newArr=[]//删除重复后的数组
for(var i=0i<data.lengthi++){
var val=data[i]
if(obj[val]||obj[val]==0){//已结存在,注意值为0时if(0){}的判断--永远为false
continue
}else{
obj[val]=val//把val以键值对的形式存入obj
newArr.push(val)
}
}
return newArr//返回删除重复的数组
}
var arr1=check(arr)//结果为:[1,2,3,4,5,6]
你在动态添加每一行的时候应该给此行 tr 添加一个 class,例如 <tr class="data">说明此行为数据,这样在操作的时候会方便很多,不会影响其它 tr,例如标题栏(条形码、商品编码)。
<script type="text/javascript">window.onload = function() {
// 这里的 add 要对应你添加单据按钮的 id
document.getElementById("add").onclick = function() {
// 这里的 table 要对应你表单的 id
var table = document.getElementById("table"),
data_rows = table.getElementsByTagName("tr")
for(var i = data_rows.length - 1i >= 0i--) {
// 这里的 data 要对应数据行的 class
if(data_rows[i].className.indexOf("data") >-1) {
var cells = data_rows[i].getElementsByTagName("td")
// 只检查前面 9 个 td,忽略备注和操作
for(var a = 0a <9a++) {
// 无内容
if(cells[a].innerHTML === "") {
// 删除此行
table.deleteRow(i)
break
}
}
}
}
// tr 删除完毕,继续其它工作
// ...
}
}
</script>
遇到这种情况你要学会自己去验证,这是我写得一小段代码,你试着运行一下,然后再改变函数的传递参数,比如换成0,就会得到另外一个结果。function test(x) {
var a = x
if(!a) {
return 0
}
elsereturn 1
}
var b = test(3)
alert(b)
总结:return语句在函数中使用,用于返回相应的值,有些时候你还会见到return false之类的语句,如果出现这样的语句,函数将就此结束,不再往下执行了。至于if语句就不用多说了吧,非0为真,例如(!0);0即假,如(!3)等。