// 多个tr标签
<tr>
<td><a href="javascript:void(0);">删除</a></td>
</tr>
// 第一种方式 全部在onload范围呢
<script>
window.onload = function (){
var as = document.getElementsByTagName("a");
for (var i = 0; i < as.length; i++) {
as[i].onclick = function (){
var table = this.parentNode.parentNode.parentNode;
var tr = this.parentNode.parentNode;
table.removeChild(tr);
}
}
}
</script>
// 第二种方式 全部在onload范围内 此处: del = function(obj){}
<script>
window.onload = function (){
var as = document.getElementsByTagName("a");
for (var i = 0; i < as.length; i++) {
as[i].setAttribute("onclick","del(this);");
}
del = function(obj){
var table = obj.parentNode.parentNode.parentNode;
var tr = obj.parentNode.parentNode;
table.removeChild(tr);
}
}
</script>
// 第三种方式 此处:function del(obj){} 没有在onload范围内
<script>
window.onload = function (){
var as = document.getElementsByTagName("a");
for (var i = 0; i < as.length; i++) {
as[i].setAttribute("onclick","del(this);");
}
}
function del(obj){
var table = obj.parentNode.parentNode.parentNode;
var tr = obj.parentNode.parentNode;
table.removeChild(tr);
}
</script>
三种方法都可以给a标签加上删除功能。请问,第二种和第三种方法不同之处的原理在哪里?个人猜是作用域问题,(onclick和onload) 但不知道具体是怎么回事。求一个懂的老哥讲明白点
当第二种方法,改为 function del(obj){} , 则报错 del is not defined at HTMLAnchorElement.onclick
而当第三种方法改为 del = function(obj){},则也可以成功执行功能