Установление свойства value тегу input button
(function() { var temp=eval('tatarcha.alphabet.'+document.getElementById('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.getElementById('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. В чём может быть проблема? |
Guliashik,
Да и еще - в скрытом visibility='hidden'; в ИЕ не меняет поле - скрывайте position:relative; z-index:-10; |
Цитата:
|
Guliashik,
Скрывать то скрывает, но поле в скрытом visibility='hidden'; или display:none; ИЕ не меняет |
window.alert(buttons[1][i].style.visibility); вывел hidden. Я скорее всего вас неверно понимаю. То есть проблема вся в visibility? Странно
|
Guliashik,
Проблема в Ие - оно не позволяет полноценно работать скриптами с input - полями скрытыми атрибутами visibility: hidden или display:none |
Убрал всё что связано с visibility. К сожалению, не помогло. Да кстати, я делал alert (buttons.value) до установления visibilty=hidden. И всё равно было undefined, может проблема всё таки не в этом?
|
Guliashik,
Может и помимо этого - изучаю код |
Пытался найти в гугле. Был похожий случай, но там была проблема вроде в области видимости переменной. Т. е. были две переменных с одинаковым именем, и одна другую перекрывала. Но вроде бы вышеприведённый код, не подходит под это описание.
|
Guliashik,
А когда меняте скриптом value после вклейки на страницу - подобная ошибка есть ? |
Нет. Поменял value после добавления на форму, и значение поменялось. В чём была проблема, не подскажите? Надо было вешать на onload? Хотя я добавил этот скрипт намеренно в конец body.
|
Guliashik,
Хм - я честно не пробовал после body, у мну всегда скрипты или в конце body, в футере, или в хиддере |
<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> Вот так работает. |
Guliashik,
aa - кажется вспомнил - что при вставке в форму - ИЕ обнуляет инпуты, (в форму скрипты не вставлял - генерил вместе с формой |
Цитата:
|
Guliashik,
А чем document.createElement('form'); отличается от document.createElement('input'); ? |
ИЕ не помню какой, не понимает свойства value у тега BUTTON и трактует его как innerHTML.
|
Deff,
Один создаёт форму, другой инпут. Перенёс все скрипты в head. Забил данную функцию на onload. Всё равно, как было undefined, так и есть. |
devote, Вродь там input ?
|
Guliashik,
Ну вы же какой то танец с бубном освоили ? - проверьте кроссбраузерность |
а может дело то не в input'ах, может дело в этом:
var temp=eval('tatarcha.alphabet.'+document.getElementById('combo_1').value);или var temp=eval('tatarcha.alphabet.'+document.getElementById('combo_2').value);что это за данные, и откуда они берутся, и вы уверены что там все как надо? |
devote,
Да, там всё как надо. Происходит вызов массива. |
Приношу свои извинения. Проблема была именно в temp=eval...
Вывел его значение и оно равно undefined. Не додумался вывести его значение, из за того, что работает в других браузерах. Большое спасибо за помощь! |
Опять соврал=) Проблема была не в eval. А в индексаторе temp[i]. Видать в IE это не проходит. Пришлось использовать charAt(i).
|
Часовой пояс GMT +3, время: 01:55. |