我正在使用以下内容:
el = doc.createElement("input");
el.size = "2%";
我收到错误消息(在Firebug中):Index or size is negative or greater than the allowed amount
。
当我注入HTML而不是正确构建DOM时,它工作正常,如下所示:
$rsc.html("<input name = 'myName' type = 'text' value = '" + myVariable + "' size = '2%' />");
为什么不接受带有createElement的2%
由于
答案 0 :(得分:2)
size
属性仅接受整数,而不接受百分比。它表示要在输入中键入的最大允许字符数。
如果将其放在HTML中,可能会忽略%,并将值解析为2。
如果您需要调整输入的宽度,则可以使用style='width:2%'
。
答案 1 :(得分:1)
size
属性的单位是字符(纯整数),不允许使用size
的任何其他单位。
如果您希望input
宽度为2%,则需要通过style
进行此操作:
el.style.width='2%';
答案 2 :(得分:1)
在chrome中观察
> var a = document.createElement('input');
> undefined
> a.size
> 20
> typeof a.size
> "number"
> a.size = "10"
> "10"
> a.size
> 10
> a.size = "1x"
> "1x"
> a.size
> 20
> a.size = "1%"
> "1%"
> a.size
> 20
在Firefox中
>>> var a = document.createElement('input');
undefined
>>> a.size
20
>>> typeof a.size
"number"
>>> a.size = 20
20
>>> a.size = "20"
"20"
>>> a.size = "2%"
Error: Index or size is negative or greater than the allowed amount
[Break On This Error]
a.size = "2%"
我认为chrome会安全地忽略无效的整数值,而firefox会抛出错误。