最近在学习JavaScript,做了一个简单的表格的练习
要求是点击删除超链接之后要弹出确认框,点击确认之后删除那一行的员工的信息,在编写的过程中发现点击超链接之后就直接跳转了,但是我明明写了return false,经过我的测试之后,发现了是this的引用问题,请各位看代码:
window.onload = function(){
/*
* 点击超链接之后,删除一个员工信息
*/
//获取所有超链接
var Alla = document.getElementsByTagName("a");
//为每个超链接都绑定一个单击响应函数
for(var i=0;i<Alla.length;i++){
Alla[i].onclick = function(){
// //获取要删除的那一行
// var tr = this.parentNode.parentNode;
// //获取员工的名字
// var name = tr.children[0].innerHTML;
// //点击超链接后弹出确认对话框
// var flag = confirm("确认删除"+name+"吗?");
alert(this.parentNode.innerHTML);
/*
* 点击连接之后超链接会进行跳转,这是超链接默认行为
* 可以通过在响应函数的最后return false来取消默认行为
*/
return false;
};
}
};
为什么我alert中使用this关键字可以弹出警示对话框并输出,而使用Alla[i]来寻找父节点会直接报错并且跳转了?
报错的结果是not found,但是我的Alla是写在for循环里的啊,代码执行到alert的时候Alla[i]不是已经确定了是第i个超链接吗?为什么它的父节点会找不到?为啥直接使用对象会找不到必须要用this来引用?
我以及找到了问题的原因和解决的方法了,详细请看链接:http://t.csdn.cn/6EUGO。
希望能帮助到和我一样的初学者
你可以在alert前面用debugger
断点看看this
此时指代的是啥
默认a 标签的this 指向window
// window
// 阻止默认跳转,就能拿到自己
// a
jQuery 语法
jQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作。
基础语法是:$(selector).action()
美元符号定义 jQuery
选择符(selector)“查询”和“查找” HTML 元素
jQuery 的 action() 执行对元素的操作
其实刚开始的时候 我也有同样的纠结 ,为什么要用this 而不是 其他的obj,a,b,等字符 就跟刚开始接触编程一样 为什么要那样写 这就是一个问题
所以 不用纠结 ,这就是规范 这个插件的规范 乌龟的屁股 - 规定
所以 不用纠结 就像 alert 弹出框 使用console.log 进行控制台打印 一样
this对应的就全部的数据,变量,window,可以不用纠结这些的