2

我正在使用以下内容:

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%' />");

为什么它不接受2%with createElement?

谢谢

4

3 回答 3

2

size属性只接受整数,不接受百分比。它表示输入中允许输入的最大字符数。如果你把它放在你的 HTML 中,可能 % 被忽略并且值被解析为 2。

如果你需要调整输入的宽度,那么你可以使用style='width:2%'.

于 2012-06-22T10:41:28.907 回答
1

size属性的单位是字符(纯整数),不允许使用任何其他单位size。如果您想获得input2% 的宽度,则需要通过以下方式进行style

el.style.width='2%';
于 2012-06-22T10:41:26.413 回答
1

用铬观察

   > 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

在火狐中

>>> 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 会引发错误。

于 2012-06-22T10:54:09.030 回答