学习JS代码firstChild方法引用问题记录
在跟着视频学习JS代码的路上,今天犯的错误折磨我很久
首先看正确的代码
//当鼠标点击单价单元格时进行价格编辑 function editPrice(){ if(event && event.srcElement && event.srcElement.tagName=="TD"){ var priceTD = event.srcElement ; //目的是判断当前priceTD有子节点,而且第一个子节点是文本节点 , TextNode对应的是3 ElementNode对应的是1 if(priceTD.firstChild && priceTD.firstChild.nodeType==3){ //innerText 表示设置或者获取当前节点的内部文本 var oldPrice = priceTD.innerText ; //innerHTML 表示设置当前节点的内部HTML priceTD.innerHTML="<input type=text size=4/>"; // <td><input type=text size=4/></td> var input = priceTD.firstChild; if(input.tagName=="INPUT"){ input.value = oldPrice ; //选中输入框内部的文本 input.select(); //4.绑定输入框失去焦点事件 , 失去焦点,更新单价 input.οnblur=updatePrice ; } } } }
生成的效果 可以进行编辑
我自己写的代码
//当鼠标点击单价单元格时进行价格编辑
function editPrice() {
//event : 当前发生的事件
//event.srcElement : 事件源
// alert(event.srcElement);
//alert(event.srcElement.tagName); --> TD
//调用匿名函数绑定priceTD事件
// alert(event.srcElement.tagName)
if (event && event.srcElement && event.srcElement.tagName == "TD") {
var priceTD = event.srcElement;
//目的是判断当前priceTD有子节点,而且第一个子节点是文本节点 , TextNode对应的是3 ElementNode对应的是1
if (priceTD.firstChird && priceTD.firstChird.nodeType == 3) {
//innerText 表示设置或者获取当前节点的内部文本
var oldPrice = priceTD.innerText;
//innerHTML 表示设置当前节点的内部HTML
//priceTD.innerHTML = "<input type =text size =4/>";
priceTD.innerHTML="<input type=text size=4/>";
// <td><input type=text size=4/></td>
var input = priceTD.firstChird;
if (input.tagName == "INPUT") {
input.value = oldPrice;
//选中输入框内部的文本
input.select();
//4.绑定输入框失去焦点事件 , 失去焦点,更新单价
input.onblur = updatePrice;
}
}
}
}
注意看 我写成了priceTD.firstChird 方法,引用错误,导致方法一直无法生效,我看了很多遍,都没有发现问题
真是代码虐我千百遍,我待代码如初恋!
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
c/c++运算符与精度(部分
