InnerHTML & IE
Народ, подскажите плз в чем может быть проблема:
ИЕ выдает неизвестную ошибку. номер строки нереальный. методом алерта нашел, что ошибка вылетает в строке $.post('selectApplication.php', {contractor:contractorValue}, function date(text){result=text; var target = document.getElementById("appDiv");target.innerHTML = text;}); в ФФ все арботает прекрасно, т.е. все библиотеки подключены, и все четко фунциклирует. Подскажите плз, из-за чего может ругаться ИЕ? причем еслм алертом выводить text, который возвращает selectApplication.php, то внутри процедуры date алерт не работает, а после процедуры пишет что undefined =( |
или contractorValue не определена, или возникают ошибки при отправке запроса (например, selectApplication.php не найден)
Цитата:
p.s. не стоит создавать лишних ненужных глобальных переменных (без var создается глобальная переменная): var result = text; // хотя непонятно, зачем вообще эта переменная p.p.s. если нужнопередать параметры: $.post('selectApplication.php', {data:{contractor:contractorValue}}... |
Подстава от IE
а у меня вот такой баг в IE все прекрасно работает под все остальные браузеры.
получаю содержимое <select></select> аякс запросом(но не суть важно) потом присваиваю вот так: getObj(div).innerHTML= request.responseText; при этом смотрю отладчиком после выполнения этой команды устанавливаются следующие значения (getObj(div) - моя функция для получения объекта, работает нормально, без нее тоже самое.) request.responseText = "<option>-----</option> <option value="1">ххх</option> <option value="2">ууу</option>" getObj(div).innerHTML= "-----</OPTION> <OPTION value="1">ххх</OPTION> <OPTION value="2">ууу</OPTION>" он зачем так делает? |
Прошу прощенья, соображал плохо, пара часиков здорового сна помогла.)) В ie не прокатит добавление option через innerHTML. Юзайте new Option. |
Размышление на тему ...
<select id="sel" ></select> <script language="JavaScript" type="text/javascript"> var responseText='<option>-----</option><option value="1">ххх</option><option value="2">ууу</option>'; var a=document.getElementById('sel'); a.outerHTML='<select id="sel" >'+responseText+'</select>' a.innerHTML=responseText </script> |
Цитата:
|
Аналогичная проблема
Помогите пожалуйста. Во всех бразуерах (ФФ, Опера, Хром) работает код отлично, а вот ИЕ ругается
unknown runtime error $ ('ObjectID').innerHTML = ((Msg != null) ? Msg : DefaultMsg); ругается на все innerHTML в коде. подскажите что делать? ObjectID - div элемент |
Цитата:
2. если используете jQuery то там есть функции html() и text() в вашем случае лучше с ними работать <script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function(){ $('body').append('<div id="div" />').text((1<2) ? 'ok' : 'none'); }); </script> |
Цитата:
2. Используется mootools. никак не удается решить проблему ( |
vinet,
в вашем случае только телепаты помогут. |
если бы хоть ошибка нормально была описана...
|
Браузер: ИЕ8.
Используется фреймворк: mootools 1.2 При запуске страницы, содержащей ЖС код, ИЕ8 выводит окно с ошибками: http://pixs.ru/showimage/window1png_1138225_1193416.png 256 строка кода файла init.js http://pixs.ru/showimage/w22png_5125804_1193418.png в самом файле mootools http://pixs.ru/showimage/w333png_9935652_1193422.png |
достаточно было указать версии и текст ошибок
возможно, mootools не запустился, поэтому и init.js не работает. Можешь дать ссылку на страницу? |
Цитата:
ИЕ вообще ругается на все innerHTML Даже на такое : $ ('AttFileOperationInfoBox').innerHTML = 'tralalal'; правда перед этим идет ошибка в самом mootools |
тогда прикрепи страничку с необходимыми файлами к сообщению
|
Вложений: 1
Ошибку нашел:
когда есть одна форма, а в нее динамически добавляется ещё одна и внутри нее динамически что-то добавляется, то это вызывает ошибку. Пример в файле. Кто-то может что-то сказать? |
более краткая версия
<!doctype html> <html> <body> <form> <form id="form2"></form> </form> <script> var form2 = document.getElementById('form2'); form2.innerHTML = 'text'; </script> </body> </html> но дело в том, что формы не могут быть вложенными: <!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form --> и в конце концов, как, по-твоему, должна сабмититься внешняя форма? Так что лучше расскажи, зачем тебе понадобились вложенные формы |
Цитата:
Не хочется абсолютным позиционированием элементы выставлять. |
еще подробнее
|
Цитата:
В общем я понял что формы нельзя делать вложенными. |
есть такая штука как диалоговые окна. А еще если много функциональности на одной страничке, стоит ее на несколько разбить
|
Спасибо :)
|
Народ, подскажите плз как исправить такой косяк... Делаю органайзер для сайта, на странице добавления нового события есть форма из трёх раскрывающихся списков - day, month и year:
![]() Понятно, что в каждом месяце определённое количество дней и я делал, чтобы при смене месяца, просчитывалось количество дней в этом месяце и менялось содержимое списка day. Вот скрипт полностью (сильно не пинайте, я новичёк в JS): <script type='text/javascript'> function isLeapYear(year) { // узнаём високосный ли год if (year % 4 == 0) return true return false } function getDays(month, year) { //узнаём сколько дней в месяце var ar = new Array(12) ar[1] = 31 // Январь ar[2] = (isLeapYear(year)) ? 29 : 28 // Февраль ar[3] = 31 // Март ar[4] = 30 // Апрель ar[5] = 31 // Май ar[6] = 30 // Июнь ar[7] = 31 // Июль ar[8] = 31 // Август ar[9] = 30 // Сентябрь ar[10] = 31 // Октябрь ar[11] = 30 // Ноябрь ar[12] = 31 // Декабрь return ar[month] } function gethtml(numb, selected) { //получаем вёрстку инпута var b; var i; var r; var s; for (i=1; i<=numb; i++){ r=''+i if (r.length<2) { //добавляем 0 вначало, если число однозначное r='0'+r; } s='' if (i==selected) { //выставляем день, который был выставлен вначале s=' selected' } b = b+\"<option value='\"+r+\"'\"+s+\">\"+r+\"</option>\" } return b } function countday() { //главная функция, которая запускает все остальные var day = document.getElementById('day'); var s=day.value; var month = document.getElementById('month'); var year = document.getElementById('year'); var a = getDays(month.value, year.value); day.innerHTML = ''; day.innerHTML = gethtml(a, s); } </script> При смене месяца вызывается функция countday(). Всё отлично работает во всех браузерах кроме IE - в day получается пустой список. Я стал досконально перебирать код и выяснил, что innerHTML в IE вообще не работает, по крайней мере на селектак. Даже если для простоты вместо всего вышеизложенного написать так: function countday() { var day = document.getElementById('day'); day.innerHTML = '<option>test</option>'; } IE всё-равно возвращает в day пустой список, а другие браузеры возвращают test. Подскажите плз как исправить ситуацию. =\ |
Даж вдумываться не хочу, есть же объект Date()
Дней в месяце m годa y: var y=2011,m=2; alert(new Date(y,m,0).getDate()) Как это работает: Объект Date принимает значение месяца от 0 до 11, т.о. мы задаём нужным_нам+1, при этом ставя день месяца в 0 мы заставляем его принимать значение: последний день месяца, предыдущего заданнному. |
Freakmeister, для кроссбраузерности необходимо использовать метод add(). Вот, посмотрите пример.
function foo() { var optn; var sel = document.getElementById("month"); for (var i = 0; i < 5; i++) { optn = document.createElement("option"); optn.text = i; optn.value = i; try { sel.add(optn, null); } catch(e) { sel.add(optn); } } } <form action="#"> <input type="button" value="add options" onclick="foo();" /> <select id="month"></select> </form> |
Часовой пояс GMT +3, время: 15:32. |