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, время: 07:34. |