Thin的DateChooser代码学习(关于js的函数参数为一个完整的函数以及“对象不支持此属性或方法”错误的解决)(原创,转载请声明)
2006-05-30 16:45
1361 查看
今天在学习Thin的DateChooser代码时,发现在I(getelement)函数中传递另外一个完整的函数作为I(getelement)函数的参数。我其实在Ajax的一些简单应用里见到过类似的使用方式但没有用过,因此决定写一个小例子学习一下。不想很简单的一个例子,却调试不过,来看一下代码,为了定位错误,我把例子简化了一下。
}
运行结果 :出现了运行时间错误。是否进行调试?
错误:对象不支持此属性或方法
这个错误花了我不少时间才解决,改正后的代码如下
}
因为tablepanel没有定义,才会出现刚才的错误,但比较奇怪的是js是不需要变量声明的,这里的错误我感觉是IE的bug,我手头没有其他的浏览器,不知道其他的会怎么样。总之,以后写类似的函数一定得注意了。
上面的代码,其实就是传递了一个查找id的函数。我们可以扩展一下,如果判断浏览器不支持document.all,我们可以传一个用到document.getElementById的函数实参,是不是很方便?
BTW, 还有几个小细节也是我在学习的过程中发现的,这里mark一下
1. DataChooser里有类似的代码
调用的时候是这样写的
}
其实这里的test的参数并没有用到,我们可以不管它。
2. 在上面的代码中我们用VS.net的调试器调试,在test函数内部执行顺序如下
首先定位到tablepanel.onselectstart,但并没有执行alert方法
其次定位到mprev.ondblclick=function mprev.onclick() ,同样没有执行alert方法
最后执行alert("test")方法
这个顺序应该是IE解析器的规则,只是如果代码很多的话,可能会感觉定位的标志到处乱跳,很是不爽。
<body> <table id="tablepanel" ></table> <script> function I(getelement) { tablepanel=getelement("tablepanel"); alert(tablepanel.id);
}
I(function getelement(id){return document.all(id)});
</script> </body>
运行结果 :出现了运行时间错误。是否进行调试?
错误:对象不支持此属性或方法
这个错误花了我不少时间才解决,改正后的代码如下
<body> <table id="tablepanel" ></table> <script> function I(getelement) { var tablepanel=getelement("tablepanel"); alert(tablepanel.id);
}
I(function getelement(id){return document.all(id)});
</script> </body>
因为tablepanel没有定义,才会出现刚才的错误,但比较奇怪的是js是不需要变量声明的,这里的错误我感觉是IE的bug,我手头没有其他的浏览器,不知道其他的会怎么样。总之,以后写类似的函数一定得注意了。
上面的代码,其实就是传递了一个查找id的函数。我们可以扩展一下,如果判断浏览器不支持document.all,我们可以传一个用到document.getElementById的函数实参,是不是很方便?
BTW, 还有几个小细节也是我在学习的过程中发现的,这里mark一下
1. DataChooser里有类似的代码
function test()
{ alert("test"); function tablepanel.onselectstart() { alert("onselectstart"); return win.event.returnValue=false; } mprev.ondblclick=function mprev.onclick(){ alert("mprev"); } }
调用的时候是这样写的
function I(getelement) { var tablepanel=getelement("tablepanel"); var mprev=getelement("prev"); alert(tablepanel.id); test(getelement);
}
其实这里的test的参数并没有用到,我们可以不管它。
2. 在上面的代码中我们用VS.net的调试器调试,在test函数内部执行顺序如下
首先定位到tablepanel.onselectstart,但并没有执行alert方法
其次定位到mprev.ondblclick=function mprev.onclick() ,同样没有执行alert方法
最后执行alert("test")方法
这个顺序应该是IE解析器的规则,只是如果代码很多的话,可能会感觉定位的标志到处乱跳,很是不爽。
相关文章推荐
- 【078】docute.js的v3.4.8版本在IE11下出现【对象不支持“from”属性或方法】错误的解决办法
- 关于js调用ocx控件报错"对象不支持此属性或方法"的解决方法
- 关于IE7打开任何网页弹出[未处理的异常('对象不支持此属性或方法')发生在iexplorer.exe]错误调试框的解决办法
- js中json字符串转换为对象以及转换是报 缺少";"错误的解决方法
- 关于使用jquery时,ie8下提示对象不支持的属性或方法的解决办法
- 关于如何利用原生js动态给一个空对象添加属性以及属性值
- 关于FreeMarker获取一个对象中另一个对象出现的问题以及解决方法
- js错误:对象不支持此属性或方法
- C# 001 --- 正确的删除一个控件的事件函数 --- 解决错误: “A”不包含“B”的定义,并且找不到可接受类型为“A”的第一个参数的扩展方法“B”(是否缺少 using 指令或程序集引用?)
- js 获取函数的所有参数和遍历JavaScript某个对象所有的属性名称和值的方法
- js 获取函数的所有参数和遍历JavaScript某个对象所有的属性名称和值的方法
- js错误:对象不支持此属性或方法
- 关于submit() 对象不支持此属性或方法的解决方法
- 一个关于“OLE DB 提供程序 'sqloledb' 指出该对象中没有任何列”错误的解决方法
- js 获取函数的所有参数和遍历JavaScript某个对象所有的属性名称和值的方法
- 一个关于“OLE DB 提供程序 'sqloledb' 指出该对象中没有任何列”错误的解决方法
- (转载和原创)关于解决C++“error LNK1169: 找到一个或多个多重定义的符号”的解决方法
- 解决javascript提交form出现错误提示:对象不支持此属性或方法
- flash和javascript交互时 出现“对象不支持此属性或方法”错误的解决方法
- js 中使用indexOf()方法是提示(对象不支持此属性或方法)如何解决?