2012-06-22 3 views
2

Я использую следующие:document.createElement: el.size = "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% с createElement?

Благодаря блок

+0

Спасибо, всем; вы все на месте :) – Nick

ответ

2

Атрибут size принимает только целые числа, а не проц. Он отображает максимальное количество разрешенных символов для ввода ввода. Если вы положили это в свой HTML, вероятно,% игнорируется и значение анализируется как 2.

Если вам нужно отрегулировать ширину ввода, вы можете использовать style='width:2%'.

+0

Спасибо за очень подробный ответ. Тестирование в Firebug показывает, что '%' игнорируется; изменение его на прямую 2 не делает различий (в то время как изменение его на 3 и 1 увеличивает и сужает его соответственно). – Nick

+0

Добро пожаловать. К сожалению, мы должны быть осторожны с HTML, потому что браузер пытается разобрать все, что может, и мы не получаем никаких предупреждений. –

+0

Абсолютно. Это прекрасный пример этого: – Nick

1

size В отеле находится символ (чистый целое число), то не разрешается использовать любые другие блоки с size. Если вы хотите иметь input, ширина которой составляет 2%, вы должны будете сделать это через style:

el.style.width='2%'; 
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 

В 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%" 

я думаю хром благополучно игнорирует недопустимые целочисленные значения, а светлячок выдает ошибку.

+0

Спасибо за это :) – Nick