На страничке есть селект:
<select name="select">
<option>Выбрать все</option>
</select>
Данные для формирования списка(<option>) получаю в виде XML строки (XMLHttpResponse -> responseXML).
Собственно вопрос в том, как теги XML строки засунуть в мой селект.
Есть идея через код: прописать создание элемента для селекта оптион через:
var text = XMLHttpResponse.getElementsByTagName('тег со словом для option');
var newoption = document.getElementByTagName('select').createElement('option');
var newtext = document.createTextNode('text');
newoption.appendChild(newtext);
document.getElementByTagName('select').appendChild(newoption);
Незнаю. Будут ли так работать? Скорее нет...
Как мне осуществить что то такое, ну очень нужно сделать за сегодня это создание списка.
Заранее спасибо.
Спустя 6 минут, 8 секунд (1.09.2011 - 15:20) Adil написал(а):
В цикле создай html рзметку <option>-ов, и засунь это на страницу (innerHtml)
Спустя 3 минуты, 50 секунд (1.09.2011 - 15:24) pavel24071988 написал(а):
Я не очень понял.
В цикле создать: значение теги.innerHTML = 'мой option' - это я понимаю
А как "В цикле создай html рзметку <option>-ов" - я не знаю, или неправильно понял.
В цикле создать: значение теги.innerHTML = 'мой option' - это я понимаю
А как "В цикле создай html рзметку <option>-ов" - я не знаю, или неправильно понял.
Спустя 29 минут, 2 секунды (1.09.2011 - 15:53) ApuktaChehov написал(а):
Adil - этот подход не будет работать в IE.
pavel24071988 - метод createElement принадлежит объекту document, соответственно вызывать его нужно так:
document.createElement('option');
А ваш селект тут вообще ни причем.
Соответственно:
и все ;)
pavel24071988 - метод createElement принадлежит объекту document, соответственно вызывать его нужно так:
document.createElement('option');
А ваш селект тут вообще ни причем.
Соответственно:
var text = XMLHttpResponse.getElementsByTagName('тег со словом для option')[0].childNodes[0].nodeValue;
var select = document.getElementById('select');
var newoption = document.createElement('option');
newoption.innerHTML = text;
select.appendChild(newoption);
и все ;)
Спустя 4 минуты, 39 секунд (1.09.2011 - 15:57) ApuktaChehov написал(а):
Я тут правил еще, так что посмотрите, что бы последняя версия была, моей писанины
Спустя 10 минут, 58 секунд (1.09.2011 - 16:08) pavel24071988 написал(а):
Спасибо
Запись
почему - то не работала, добавил ID="select" и переделал на :
Прописал все в функцию show
R id добавил обработчик события получил :
Добавляю сейчас один элемент.
Записи добавляются но невозможно их выбрать? Они не становятся подсвеченными пр наведении на них курсора :(
Почемуже не работает.
А я только собрался про Id писать
Запись
var select = document.getElementByTagName('select');
почему - то не работала, добавил ID="select" и переделал на :
var select = document.getElementsById('select');
Прописал все в функцию show
R id добавил обработчик события получил :
<select name="select" id="select" onclick="show" >
Добавляю сейчас один элемент.
Записи добавляются но невозможно их выбрать? Они не становятся подсвеченными пр наведении на них курсора :(
Почемуже не работает.
А я только собрался про Id писать
Спустя 3 минуты, 16 секунд (1.09.2011 - 16:12) ApuktaChehov написал(а):
var select = document.getElementById('select');
Букву s уберите.
Букву s уберите.
Спустя 3 минуты, 51 секунда (1.09.2011 - 16:16) pavel24071988 написал(а):
Я ошибся в сообщении. В коде её нет. При нажатии на селект запись появляется, но через 2секунды селект самопроизвольно закрывается.
Спустя 4 минуты, 53 секунды (1.09.2011 - 16:20) ApuktaChehov написал(а):
Потому, что это IE.
Спустя 1 минута, 57 секунд (1.09.2011 - 16:22) ApuktaChehov написал(а):
А чего вы сделать то хотите? Заполнять селекты по онклику - плохая не слишком удачная идея.
Спустя 3 часа, 43 секунды (1.09.2011 - 19:23) pavel24071988 написал(а):
-Действительно! Как я и сам не догадался про IE - он мне же не первый раз малину портит.
-да да да Я именно этого и хочу. Почему плохая идея? Сделать по загрузке страницы?
-да да да Я именно этого и хочу. Почему плохая идея? Сделать по загрузке страницы?
Спустя 2 часа, 10 минут, 52 секунды (1.09.2011 - 21:34) ApuktaChehov написал(а):
pavel24071988 - хоты бы потому, что в IE не работает
Можно по загрузке страницы, но тогда смысла использовать JS вообще не вижу. Проще на пхп все сформировать.
Мне сложно судить, я не знаю, какая у вас задача стоит. Если список, который создается один раз на странице, тогда однозначно пхп. А если нужно что бы он динамически формировался по какому-либо событию, то нужно обработчик формирования списка вешать на это событие.
Можно по загрузке страницы, но тогда смысла использовать JS вообще не вижу. Проще на пхп все сформировать.
Мне сложно судить, я не знаю, какая у вас задача стоит. Если список, который создается один раз на странице, тогда однозначно пхп. А если нужно что бы он динамически формировался по какому-либо событию, то нужно обработчик формирования списка вешать на это событие.
Спустя 10 часов, 24 минуты, 21 секунда (2.09.2011 - 07:58) pavel24071988 написал(а):
Список формируется один раз. Подскажите пожалуйста что значит
"Проще на пхп все сформировать."?
Я что то не очень понял как тут php можно использовать? Я думал что способ описанный мною выше - единственен.
"Проще на пхп все сформировать."?
Я что то не очень понял как тут php можно использовать? Я думал что способ описанный мною выше - единственен.
Спустя 53 минуты, 23 секунды (2.09.2011 - 08:52) ApuktaChehov написал(а):
Эту самую страницу, случаем не php генерит? Если вы совсем php не используете, то тут конечно проще на js сделать. Тогда нужно формировать этот список вместе со страницей.
Спустя 13 минут, 8 секунд (2.09.2011 - 09:05) pavel24071988 написал(а):
Понял.
Страницу php не генерит.
Страницу php не генерит.
Спустя 2 дня, 23 часа, 12 минут, 44 секунды (5.09.2011 - 08:18) pavel24071988 написал(а):
Вообщем, то что я хотел получилось. Вот код :
Значения "word" показывается из трех браузеров только в Opere и Mozille
В IE значения выбранного option(a) не показываются, а очень нучно что бы и этот браузер все отображал.
Я конечно понимаю что IE в топку!, но по задаче нужна его поддержка.
Помогите советом пожалуюся.
<body onload="f_selec()">
<select name="select" id="select" onchange="f_blur()">
<option>Выбрать все</option>
</select>
<script type="text/javascript" language="javascript">
function f_selec(){
for(i=0;i<100;i++){
var text = i;
var select = document.getElementById('select');
var newoption = document.createElement('option');
newoption.innerText = text;
select.appendChild(newoption);
}
}
function f_blur(){
var word = document.getElementById('select').value;
alert (word);
}
</script>
</body>
Значения "word" показывается из трех браузеров только в Opere и Mozille
В IE значения выбранного option(a) не показываются, а очень нучно что бы и этот браузер все отображал.
Я конечно понимаю что IE в топку!, но по задаче нужна его поддержка.
Помогите советом пожалуюся.
Спустя 1 час, 31 минута, 25 секунд (5.09.2011 - 09:49) ApuktaChehov написал(а):
Пробуем:
<body onload="f_selec()">
<select name="select" id="select" onchange="f_blur(this);">
<option>Выбрать все</option>
</select>
<script type="text/javascript" language="javascript">
function f_selec() {
var select = document.getElementById('select');
for(i = 0; i < 100; i++) {
var newoption = document.createElement('option');
newoption.setAttribute('value', i);
newoption.innerHTML = i;
select.appendChild(newoption);
}
}
function f_blur(obj){
alert (obj.value);
}
</script>
</body>
Спустя 3 минуты, 3 секунды (5.09.2011 - 09:52) pavel24071988 написал(а):
Да, ловко это у Вас все получается
Спасибо!
Надо поближе познакомится с этим setAttribute...
Спасибо!
Надо поближе познакомится с этим setAttribute...
Спустя 2 минуты (5.09.2011 - 09:54) ApuktaChehov написал(а):
pavel24071988 - ловкость рук и никакой магии
Спустя 2 минуты, 52 секунды (5.09.2011 - 09:57) pavel24071988 написал(а):
Я тоже так хочу!
Спустя 59 секунд (5.09.2011 - 09:58) ApuktaChehov написал(а):
pavel24071988 - для этого нужно решать задачи, типа вашей. Решите их пару десятков и все станет очень просто и элементарно.
Спустя 4 минуты, 54 секунды (5.09.2011 - 10:03) pavel24071988 написал(а):
Вообщем спасибо.
очень помогаете!
очень помогаете!
Спустя 25 минут, 29 секунд (5.09.2011 - 10:28) moskitos80 написал(а):
Держи набросал на коленке, работает везде. Клиент:
Сервер "server.php" :
Но по правильному, в рабочем приложении ещё нужно обрабатывать Ajax - ошибки и ещё ситуацию, если XML - имеет не правильный формат.
<!DOCTYPE html>
<html lang="ru-RU">
<head>
<title>Menu</title>
<script>
if(typeof window.getRequest === "undefined")
{
function getRequest() {
var request = null;
try{ request = new XMLHttpRequest() }catch(e){};
try{ request = new ActiveXObject("Msxml2.XMLHTTP") }catch(e){};
try{ request = new ActiveXObject("Microsoft.XMLHTTP") }catch(e){};
return request;
}
}
window.onload = function()
{
(function (GLOBAL, Opt) {
'use strict';
var request = GLOBAL.getRequest(),
menu = GLOBAL.document.getElementById("menu"),
i = 0,
opt = null,
length = 0,
result = [];
if (request === null) {
GLOBAL.alert("Ваш браузер не поддерживает Ajax.");
}
request.open("GET", "server.php", true);
request.onreadystatechange = function (evt) {
if (request.readyState === 4 && request.status === 200) {
result = request.responseXML.documentElement.getElementsByTagName("option");
for (length = result.length; i < length; i += 1) {
opt = new Opt(result[i].firstChild.nodeValue, result[i].getAttribute("value"));
menu.options[i] = opt;
}
}
};
request.send(null);
}(this, Option));
}
</script>
</head>
<body>
<form name="myform">
<select id="menu"></select>
</form>
</body>
</html>
Сервер "server.php" :
<?php
header('Content-type: text/xml; charset=utf-8');
echo '<?xml version="1.0" encoding="utf-8"?>
<select>
<option value="1">One</option>
<option value="2">two</option>
<option value="3">three</option>
<option value="4">four</option>
</select>';
?>
Но по правильному, в рабочем приложении ещё нужно обрабатывать Ajax - ошибки и ещё ситуацию, если XML - имеет не правильный формат.
Спустя 1 час, 26 минут, 8 секунд (5.09.2011 - 11:54) pavel24071988 написал(а):
Вот за это спасибо, руки не доходили до этого что бы такой счетчик разобрать
length = result.length; i < length