【发布时间】:2011-06-09 09:29:37
【问题描述】:
document.createElement、document.createTextNode、[element].setSelectionRange等方法不能做“捷径”吗?
var c = document.createElement;
var div = c('div');
div.innerHTML = 'blah';
document.body.appendChild(div);
执行上述代码时Firebug控制台返回错误:
未捕获的异常:[异常...“无法转换 JavaScript 参数”nsresult:“0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)”位置:“JS 框架 :: http://fiddle.jshell.net/_display/ :: :: line 20”数据:否]
这发生在 jsfiddle as provided here 上,并且在 jsfiddle 之外完成且没有错误时会静默失败。
下面的代码可以正常工作,那么它是否仅限于 DOM 操作方法?
function long_function_name(prop)
{
alert(prop);
}
var c = long_function_name;
c('blah');
这有压缩的实际示例:
代替:
if (element.setSelectionRange)
{
element.setSelectionRange(pos, pos);
}
压缩到:
var s = element.setSelectionRange || 0;
if (s) s(pos, pos);
【问题讨论】:
-
即使
var s = element.setSelectionRange;也足够了。如果该属性未定义,它将返回undefined,其计算结果为false。 -
哦,谢谢@Felix,很高兴知道!很遗憾,由于上下文问题,这不起作用,就像下面的答案一样
标签: javascript