Вход

Просмотр полной версии : Установление свойства value тегу input button


Guliashik
07.06.2012, 16:37
(function()
{
var temp=eval('tatarcha.alphabet.'+document.getElement ById('combo_1').value);
var buttons=[];
buttons[0]=[];
buttons[1]=[];
for(var i=0;i<temp.length;i++)
{
buttons[0][i]=document.createElement('input');
buttons[0][i].type= 'button';
buttons[0][i].name= 'key_but_1';
buttons[0][i].value= temp[i];
buttons[0][i].style.visibility='hidden';
if(i%10==0)
{

document.body.appendChild(document.createElement(' br'));

}
document.body.appendChild(buttons[0][i]);
tatarcha.addEvent(buttons[0][i],'click',function(event){
tatarcha.insertLetter(event);
});
}
temp=eval('tatarcha.alphabet.'+document.getElement ById('combo_2').value);
for(i=0;i<temp.length;i++)
{
buttons[1][i]=document.createElement('input');
buttons[1][i].type= 'button';
buttons[1][i].name= 'key_but_2';
buttons[1][i].value=temp[i];
buttons[1][i].style.visibility='hidden';
if(i%10==0)
{
document.body.appendChild(document.createElement(' br'));
}
document.body.appendChild(buttons[1][i]);
tatarcha.addEvent(buttons[1][i],'click',function(event){
tatarcha.insertLetter(event);
});
}
tatarcha.alphabet.keyboard=buttons;
})();
Не работает только в IE. при этом остальные свойства (name, type) отлично выводятся в alert, а valye= undefined. В чём может быть проблема?

Deff
07.06.2012, 16:50
Guliashik,
Да и еще - в скрытом visibility='hidden'; в ИЕ не меняет поле - скрывайте position:relative; z-index:-10;

Guliashik
07.06.2012, 17:08
Guliashik,
Да и еще - в скрытом visibility='hidden'; в ИЕ не меняет поле - скрывайте position:relative; z-index:-10;
Странно, у меня скрывает.

Deff
07.06.2012, 17:10
Guliashik,
Скрывать то скрывает, но поле в скрытом visibility='hidden'; или display:none; ИЕ не меняет

Guliashik
07.06.2012, 17:14
window.alert(buttons[1][i].style.visibility); вывел hidden. Я скорее всего вас неверно понимаю. То есть проблема вся в visibility? Странно

Deff
07.06.2012, 17:18
Guliashik,
Проблема в Ие - оно не позволяет полноценно работать скриптами с input - полями скрытыми атрибутами visibility: hidden или display:none

Guliashik
07.06.2012, 17:26
Убрал всё что связано с visibility. К сожалению, не помогло. Да кстати, я делал alert (buttons.value) до установления visibilty=hidden. И всё равно было undefined, может проблема всё таки не в этом?

Deff
07.06.2012, 17:33
Guliashik,
Может и помимо этого - изучаю код

Guliashik
07.06.2012, 17:37
Пытался найти в гугле. Был похожий случай, но там была проблема вроде в области видимости переменной. Т. е. были две переменных с одинаковым именем, и одна другую перекрывала. Но вроде бы вышеприведённый код, не подходит под это описание.

Deff
07.06.2012, 17:43
Guliashik,
А когда меняте скриптом value после вклейки на страницу - подобная ошибка есть ?

Guliashik
07.06.2012, 17:49
Нет. Поменял value после добавления на форму, и значение поменялось. В чём была проблема, не подскажите? Надо было вешать на onload? Хотя я добавил этот скрипт намеренно в конец body.

Deff
07.06.2012, 17:54
Guliashik,
Хм - я честно не пробовал после body, у мну всегда скрипты или в конце body, в футере, или в хиддере

Guliashik
07.06.2012, 17:55
<script type="text/javascript" src="scripts/alphabet.js"></script>
<script type="text/javascript">
window.alert(tatarcha.alphabet.keyboard[0][0].value);
tatarcha.alphabet.keyboard[0][0].value='а';
window.alert(tatarcha.alphabet.keyboard[0][0].value);
</script>
</form>
</body>
Вот так работает.

Deff
07.06.2012, 18:02
Guliashik,
aa - кажется вспомнил - что при вставке в форму - ИЕ обнуляет инпуты,
(в форму скрипты не вставлял - генерил вместе с формой

Guliashik
07.06.2012, 18:05
генерил вместе с формой
Это как?

Deff
07.06.2012, 18:12
Guliashik,
А чем document.createElement('form'); отличается от
document.createElement('input'); ?

devote
07.06.2012, 18:13
ИЕ не помню какой, не понимает свойства value у тега BUTTON и трактует его как innerHTML.

Guliashik
07.06.2012, 18:17
Deff,
Один создаёт форму, другой инпут.
Перенёс все скрипты в head. Забил данную функцию на onload. Всё равно, как было undefined, так и есть.

Deff
07.06.2012, 18:21
devote, Вродь там input ?

Deff
07.06.2012, 18:22
Guliashik,
Ну вы же какой то танец с бубном освоили ? - проверьте кроссбраузерность

devote
07.06.2012, 18:26
а может дело то не в input'ах, может дело в этом:
var temp=eval('tatarcha.alphabet.'+document.getElement ById('combo_1').value); или var temp=eval('tatarcha.alphabet.'+document.getElement ById('combo_2').value); что это за данные, и откуда они берутся, и вы уверены что там все как надо?

Guliashik
07.06.2012, 18:31
devote,
Да, там всё как надо. Происходит вызов массива.

Guliashik
07.06.2012, 18:39
Приношу свои извинения. Проблема была именно в temp=eval...
Вывел его значение и оно равно undefined. Не додумался вывести его значение, из за того, что работает в других браузерах.
Большое спасибо за помощь!

Guliashik
07.06.2012, 18:53
Опять соврал=) Проблема была не в eval. А в индексаторе temp[i]. Видать в IE это не проходит. Пришлось использовать charAt(i).