Проблема с IE 9
Есть код
<html> <head> <meta charset="utf-8" /> <title>Test</title> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> var g_xml; $(document).ready(function(){ $.ajax({ type: "GET", url: "test.xml", dataType: "xml", success: vasa }); var button2 = document.getElementById("id2"); button2.style.display='none'; var button3 = document.getElementById("id3"); button3.style.display='none'; function vasa(xml) { ResultTextTrue=$(xml).find('ResultTextTrue').text(); ResultTextFalse=$(xml).find('ResultTextFalse').text(); attemptsanswer=$(xml).find('attemptsanswer').text(); g_xml=xml; html=''; item=$(xml).find('questions').children(); for(i=0; i<$(item).length; i++){ html=html+"<div class='question' value='"+i+"'>"; variant=''; element=$(item).eq(i).children(); k=0; title="<p>"+$(element)[0].textContent+"</p>"; ans=$(element).eq(1).children(); for(j=0; j<$(ans).length; j++){ variant=variant+"<input type='radio' value='"+k+"' name='question"+i+"'>"+$(ans)[j].textContent; k++; } k=0; html=html+title+variant+"</div>"; } $('#queston').html(html); var div = document.getElementById('divi'); //var decoration = xml.querySelector('style'); div.style.border = $(xml).find('style').attr('border'); div.style.width = $(xml).find('style').attr('width'); div.style.height = $(xml).find('style').attr('hight'); div.style.padding = $(xml).find('style').attr('padding'); div.style.margin = $(xml).find('style').attr('margin'); div.style.position = $(xml).find('style').attr('position'); } }); var pressed=0; var pressed1=0; function checkAnswer(){ q=$('#form').find('.question'); for(i=0; i<$(q).length; i++){ q_value=$(q).eq(i).attr('value'); value=$(q).eq(i).find('input:checked').attr('value'); rating=$(g_xml).find('questions').children().eq(q_value).children().eq(1).children().eq(value).attr('rating') ans=$(g_xml).find('questions').children().eq(q_value).children(); text=$(ans).find('[rating="1"]').text() if(rating==1){ //alert($(q).eq(i).find('p').text()+" - good ("+text+")"); output.value=ResultTextTrue; }else{ // alert($(q).eq(i).find('p').text()+" - bad ("+text+")"); output.value=ResultTextFalse; } } if(pressed<attemptsanswer) { document.getElementById('meow').innerHTML = ++pressed; // alert(pressed); } else { pressed=0; var button = document.getElementById("send"); button.style.display='none'; var button1 = document.getElementById("id1"); button1.style.display='none'; var button2 = document.getElementById("id2"); button2.style.display=''; button2.onclick = function(event){ button.style.display=''; button1.style.display=''; button2.style.display='none'; g=++pressed1; if(pressed1>attemptsanswer) { button.style.display='none'; button1.style.display='none'; button2.style.display='none'; var button3 = document.getElementById("id3"); button3.style.display=''; // alert('ваши попытки закончились.Узнайте правильный ответ'); } } } } function TrueAnswer(){ for(i=0; i<$(q).length; i++){ q_value=$(q).eq(i).attr('value'); rating=$(g_xml).find('questions').children().eq(q_value).children().eq(1).children().eq(value).attr('rating') ans=$(g_xml).find('questions').children().eq(q_value).children(); text=$(ans).find('[rating="1"]').text(); output.value+=($(q).eq(i).find('p').text()+"("+text+")"); } } </script> </head> <body> <div id='form'> <p>На кнопочку тыкнуто: <span id="meow">0</span> раз.</p> <div id="divi"> <div id="queston"></div> </div> <button id='send' name='send' onclick='checkAnswer()' >Проверить</button> <button id="id1" type="reset">Стереть Ответы</button> <button id="id2" type="reset">Начать тест заново</button> <button id="id3" type="button" onclick="TrueAnswer()" >Показать правильный ответ</button> <p style=" position:relative"><textarea id="output" readonly></textarea></p> </div> </body> </html> И IE ругаетса на строку item=$(xml).find('questions').children(); и говорит "Команда не поддерживается объектом".Что с этим можно поделать?Я так понимаю проблема не в children()? так как пишут что ,этот метод это была чисто для IE.Что тогда нетак подскажите пожалуста |
Цитата:
item=$(xml); item=item.find('questions'); item=item.children(); И посмотреть что именно "не нравится"... |
у меня Undefined variable: attemptsanswer пишет
выложи код на http://codepen.io/pen/ например |
ам ну ругаетса конкретно в строке
item=$(xml); Если поменять itemна любую другую переменную то работает(создаютса input и все остальное) но все текстовые поля обозначает как udentified. |
Цитата:
|
вот получилось выложить в песочницу
http://learn.javascript.ru/play/SPHlY В песочнице во всех браузерах отображаетса так как нужно.Но когда запускаю локально то в IE все тектовые поля выдаёт как udentified |
локально $.ajax не должно работать, если у тебя веб сервера нету
|
Цитата:
Так я собственно немогу понять,почему если в песочнице все работает и создаётса коректно и IE,то почему локально нехочет работать?Ну тоесть когда я подргружаю xml файл с сервера. |
мучался вчера и севодня так и непонял,почему в песочнице все ок,а когда подгружаю xml файл как с сервера то все текстовые поля udentified?
подскажите пожалуста как это исправить? |
Нашол в чем проблема.Но немогу ёё решить.В строках
variant=variant+"<input id='radio' type='radio' value='"+k+"' name='question"+i+"'>"+$(ans)[j].textContent; title="<p>"+$(element)[0].textContent+"</p>"; textContentв IE выдаёт udentified его нужно менять на text() делаю это так title="<p>"+$(element)[0].text()+"</p>"; но тогда совсем ничево не создаётса,если ставлю просто textто в любом браузере кроме IE в месте текста стоит udentified.Как с этим боротса? Пробовал делать так,для проверки textquestion=$(element)[0].text(); title="<p>"+textquestion+"</p>"; Собственно не создаётса совсем ничево,и я так полагаю дело в text().Его здесь что нельзя использовать?Но везде пишут что text() не будет работать если его использовать с <input> а он с <input> в моём коде не заимодействует же. И столкнулса с ище одной проблемой.Переделал немного код и теперь он выглядит так <form id="form" onsubmit="return false"> <div id="divi"> <div id="queston"></div> </div> <button id='send' name='send' onclick="checkAnswer()">Проверить</button> <button id="id1" type="reset">Стереть Ответы</button> <button id="id2" type="reset">Начать тест заново</button> <button id="id3" onclick="TrueAnswer()" >Показать правильный ответ</button> <p style=" position:relative"><textarea id="output" readonly></textarea></p> </form> Но так IE нехочет реагировать на нажтие кнопки Проверить.А с изначальным кодом который я сбрасывал все работало нормально.В чем проблема?И да в этой строке тоже менял когда с формой то так. q=$('form').find('.question'); Ну либо же подскажите как сделать так что-бы убирать отмеченый radiobutton?Ну тоесть если писать функцию function reset(){ output.value=''; } и вызывать ёё здесь <div id="form"> <div id="divi"> <div id="queston"></div> </div> <button id='send' name='send' onclick='checkAnswer()' >Проверить</button> <button id="id1" onclick='reset()'>Стереть Ответы</button> <button id="id2" onclick='reset()'>Начать тест заново</button> <button id="id3" onclick="TrueAnswer()" >Показать правильный ответ</button> <p style=" position:relative"><textarea id="output" readonly></textarea></p> </div> |
подскажите подалуста что с этим делать,я уже перепробовал все что знал.
Проблему обрисовал в последнем сообщении прошлой страниуц.Подскажите пожалуста как пожстроитса под этот долбаный IE |
Проблему с формой решил.Некак немогу решить проблему с
TextContent С <form>проблему решил так,забыл что в IE ему все нужно задавать явно.В месте вывода в текстовое поле нужно явно указывать куда выводить,вот так var u=document.getElementById('output'); u.value=ResultTextTrue; а не output.value=ResultTextTrue; Подскажите как решить проблему с TextContent.Почему когда в коде textContent меняю на text(),то все перестаёт работать?Как мне заменить TextContent чтобы все работало как в IE так и в других браузерах? Либо же если нету решения проблемы про <TextContent> подскажите пожалуста как можно обрабатывать браузер с какого зашол пользователь,и в зависимости с какого браузера он зашол,выполнялся разный код?Я нашол просто как определять браузер с какого челвоек зашол,а как использовать разные варианты кодов,в зависимости от того с какого браузера зашли? вот закинул код в пеочницу http://learn.javascript.ru/play/rOSFK |
решил проблему тем что просто проверяю какой браузер я использую.Если у кого-то будет подобная проблема то вот самый обычный код проверки.
var ua = navigator.userAgent; if (ua.search(/MSIE/) > 0){ //код который использовать в IE } else{ //код который использовать во всех остальных браузерах. } Но у меня есть ище вопрос.Мне подсказали кто сталкивался с проблемами парсинга,что стоит здесь $.ajax({ type: "GET", url: "test.xml", dataType: "xml", dataType использовать не как xml а text и потом преобразовывать в xml я не совсем понял,что значит преобразовывать в xml,Вы немогли бы пояснить? |
Цитата:
Нужно так: $(element).eq(0).text() Сниффинг строки useragent - неблагодарное дело. Лучше уж так: var text = element[('textContent' in element) ? 'textContent' : 'text']; Цитата:
radio.checked = false; Или вызывай form.reset() - это сбросит все значения формы автоматически. |
Цитата:
|
Спасибо за ответ про DOM-элемент.Я уже вчера ближе к ночи понял что я хочу зделать невозможное.Буду знать.
Но не сосем понял про это var text = element[('textContent' in element) ? 'textContent' : 'text']; вы имеете ввиду что использовать var ua = navigator.userAgent; Несовсем хорошо?А почему так? А как использовать ту строку который дали вы в моём коде? А ище возник такой вопрос.Это же не столь важно,что xml документ в кодировке encoding="windows-1251" а html <meta charset="utf-8" />? Потомучто человек говорит что нужно xml документ пересохранить в UTF-8 и убрать encoding="windows-1251" и у него все работает в IE с TextContent.А я проделываю ту же операцию и у меня всеравно текст не отображаетса в IE с TextContent.Что это может быть? |
Цитата:
|
делаю вот так вот.
http://learn.javascript.ru/play/FDXNY И я немного в шоке,код остался точно тотже,но утром у меня ничево не отображало,а сейчас отображает коректно?И я непойму почему так? И ище возник такой вопрос,если допустим xml документ размещен в какойто другой папке,то путь ему указывать в url как допустим C://wamp/ну и так далее?Ну тогда оно нехочет работать.Как правильно нужно писать url если xml размещать в какой-то другой папке? И ище столкнулся с бедой,меняю какието названия или ище что-то сохраняю.во всех браузерах все меняетса а в IE какаета хрень все файлы хранят прошлые данные?че за хрень? |
Не путай виртуальный url (локатор) с реальным path в файловой системе до файла.
Ты хоть раз видел сайты с адресом вроде C://google.com ??? Нет? Ну так че городишь? |
Ну так я и спрашиваю,как мне подключать xml документ если он находится где-то в другой папке допустим?
Типа вот так? url: "http://localhost/test.xml", Спасибо большое вам за помощь |
Цитата:
url: '/test.xml' |
Цитата:
|
Часовой пояс GMT +3, время: 15:34. |