完整代码已贴出,问题就在里面
var HTMLElePrototype = {
extend: function ( name, fn ) {
var _getEleById = document.getElementById;
document.getElementById = function ( id ) {
var _ele = _getEleById.apply( document, [id] );
eval( "_ele." + name + "=fn" );
return _ele;
}
}
}
HTMLElePrototype.extend( "myPreviousSibling", function () {
var e = this.previousSibling;
while ( e && e.nodeTpye != 1 ) {
//我添加了e.nodeType的监视,发现这伙居然有两个值 如下.
//Name Value Type
//e.nodeType 1 Number
//e.nodeType undefined Undefined e = e.previousSibling;
//这就是我上面判断失败的原因.为什么,我可从来没在C#里见过一个变量同时有两个值
//请高手解释下为什么 }
return e;
} );window.onload = function x() {
var pr = document.getElementById( "p1" ).myPreviousSibling();
lalert( pr );
}<body>
<p>p</p>
<p>p</p>
<p id="p1">p1</p>
<p>p</p></body>
解决方案 »
- 请问Grails日历插件:自定义年份范围的参数怎么设置?
- 请教jquery的after外部插入方法
- 百度js弹出登录窗口怎么实现的
- js中onClick([object object])的传参问题。跪求!
- 动态新建div如何指定onmousedown方法?
- setting a property that has only a getter
- 导航条问题
- 有没有将一个数组中重复的值删除的Function?
- 请问如何做层的隐藏
- ubuntu firefox 33.0 使用 textarea 滚动条自动到底部问题
- 关于给input的属性绑定json数据的奇怪现象
- 怎么实现在下面这网页上面插入一个DIV实现多行逐字显示(下面是代码)
问题补充*************************************
错误的原因就是我期望的是( e && e.nodeTpye != 1 )
e.nodeType 总是等于undefined
我在在变量 监视发现他居然有两个值//我添加了e.nodeType的监视,发现这伙居然有两个值 如下.
//Name Value Type
//e.nodeType 1 Number
//e.nodeType undefined Undefined
有些浏览器获得的是一个空白元素 而有些不是
所以需要循环
e.nodeType总是等于undefined
多谢楼上人才,你就是一大神