Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript in HTML | select'ы / 17 сообщений из 17, страница 1 из 1
12.10.2009, 08:42
    #36244798
Avias
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
Здравствуйте, у меня возник вопрос, на который я сам ответить не в состоянии в виду свой не опытности в javascript.

Имеется скрипт:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
        <title>Yo!</title>
    </head>
    <body>
        <form action="" name="form_top">
            <select name="server" onchange="toggle(this,'slave')">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
            <select name="slave">
                <option value="1">Slave1Value1</option>
                <option value="1">Slave1Value2</option>
            </select>
        </form>
        <script type="text/javascript">
        var toggle =
            function () {
                var C = {},
                    S = {
                     1  : [['Slave1Value1', '1'], ['Slave1Value2', '2']],
                     2  : [['Slave2Value1', '1'], ['Slave2Value2', '2']],
                     3  : [['Slave3Value1', '1'], ['Slave3Value2', '2']]
                };                               
                function M(v) {
                    var s = document.createElement('select'), i, l;
                    for (i =  0 , l = S[v].length; i < l; i++) {
                        s.options[i] = new Option(S[v][i][ 0 ], S[v][i][ 1 ], false, false);
                    }
                    return (C[v] = s);
                };                           
                return function (t, n) {
                        var s = C[t.value] || M(t.value);
                        t.form.replaceChild(s, t.form[n]);
                        t.form[s.name = n] = s;
                    };
            }();
        </script>
    </body>
</html>

мне нужно к 1 : [['Slave1Value1', '1'], ['Slave1Value2', '2']] дописать еще несколько параметров, чтобы выглядело примерно так 1 : [['Slave1Value1', '1', 'description', 'img'], ['Slave1Value2', '2', 'description', 'img']]
и вывести их на экран.

Вот собственно не знаю, как исправить скрипт под свои нужды, надеюсь, мне помогут.
...
Рейтинг: 0 / 0
12.10.2009, 13:24
    #36245536
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
а что значит запись
Код: plaintext
1.
2.
3.
4.
5.
S = {
         1  : [['Slave1Value1', '1'], ['Slave1Value2', '2']],
         2  : [['Slave2Value1', '1'], ['Slave2Value2', '2']],
         3  : [['Slave3Value1', '1'], ['Slave3Value2', '2']]
     };     
просто интересно, никогда с такой не сталкивался)) это типа хэшмепа какого-то чтоли)ключ-значение?
...
Рейтинг: 0 / 0
12.10.2009, 13:32
    #36245559
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
EmilRegis,

ну да, хэш из двухмерных массивов
...
Рейтинг: 0 / 0
12.10.2009, 13:38
    #36245579
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
это не хеш, тут нет заданных ключей, это просто двумерный массив.
...
Рейтинг: 0 / 0
12.10.2009, 13:39
    #36245581
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
а наврал :) глянул выше.. да, хеш
...
Рейтинг: 0 / 0
12.10.2009, 13:50
    #36245609
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
Там где добавить, пишешь
Код: plaintext
1.
2.
3.
for (var i =  0 , _s; _s = S["1"][i]; i++) {
    _s.push("description");
    _s.push("img");
}
Или если для всех объектов
Код: plaintext
1.
2.
3.
4.
for (var i in S)
    for (var j =  0 , _s; _s = S[i][j]; j ++) {
        _s.push("description");
        _s.push("img");
    }
Хотя по мне, то лучше иметь набор не массивов, а объектов, как-то удобнее и надежнее, что ли:
Код: plaintext
S = { 1 :[{id:"1", value:"Slave1Value1", desc:"description", tag:"img"}, {...}],  2 :[...]}
...
Рейтинг: 0 / 0
12.10.2009, 15:06
    #36245814
Avias
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
IDVsbruckТам где добавить, пишешь
Код: plaintext
1.
2.
3.
for (var i =  0 , _s; _s = S["1"][i]; i++) {
    _s.push("description");
    _s.push("img");
}
Или если для всех объектов
Код: plaintext
1.
2.
3.
4.
for (var i in S)
    for (var j =  0 , _s; _s = S[i][j]; j ++) {
        _s.push("description");
        _s.push("img");
    }
Хотя по мне, то лучше иметь набор не массивов, а объектов, как-то удобнее и надежнее, что ли:
Код: plaintext
S = { 1 :[{id:"1", value:"Slave1Value1", desc:"description", tag:"img"}, {...}],  2 :[...]}


Спасибо за помощь, но Вы не представляете, сколько нервов мне нужно затратить, чтобы привести это в рабочий код... Боже, почему я никогда не интересовался явой....

Я, конечно, все понимаю, но осмелюсь попросить готовый код..., если это сильно Вас не затруднит.

Я так понимаю, ваша функция выдергивает description и img из конструкции
Код: plaintext
 1  : [['Slave1Value1', '1', 'description', 'img'], ['Slave1Value2', '2', 'description', 'img']]

А как его в последствии вывести?
...
Рейтинг: 0 / 0
12.10.2009, 15:10
    #36245828
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
джавой можете и дальше не интересоваться)) это javascript
...
Рейтинг: 0 / 0
12.10.2009, 15:12
    #36245840
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
На экран можете вывести просто...
В нужном месте задать div
Код: plaintext
1.
<div id="content"></div>
И потом его заполнить тем, что вам нужно
Код: plaintext
1.
document.getElementById("contenr").innerHTML = //полученные вами ранее значения;
...
Рейтинг: 0 / 0
12.10.2009, 15:16
    #36245849
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
тьфу не то написал похоже, извините не посмотрел начальный код...
...
Рейтинг: 0 / 0
12.10.2009, 18:45
    #36246453
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
все не так сложно как кажется, если знать базовые основы программирования и понимать синтаксис си-подобных языков (читай - не просирать юность на вижал басике).

вот сколько я сегодня нервов потратил на написание собственного плаина под ckeditor без какой-либо документации, это да :) хотя нет, какие нервы, все оказалось достаточно просто
...
Рейтинг: 0 / 0
13.10.2009, 01:23
    #36246887
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
зывсе не так сложно как кажется, если знать базовые основы программирования и понимать синтаксис си-подобных языков (читай - не просирать юность на вижал басике).
хм, а я именно этим в юности и занималась, всю школу.... А потом в универе, на первом курсе - "бэйсик отстой, даешь курсовую на си!", на третьем - "си отстой, за веб-технологиями будущее! даешь курсовую на пхп!", на четвертом - "пхп отстой, даешь проект на перле!", на пятом - "это все байда, джава - это реально круто, даешь диплом на джаве!". Вот с тех пор я и люблю тихий скромный жаваскрипт, ни на что такое не претендующий...
...
Рейтинг: 0 / 0
13.10.2009, 13:54
    #36247926
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
так у тебя не печальный опыт, а многогранный, радоваться надо :)
...
Рейтинг: 0 / 0
13.10.2009, 14:09
    #36247968
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
Эх, моложежь! А меня в универе, на военной кафедре, учили программировать на ЯСК - язык символического кодирования (т.е., ассемблер для Минск-32) и алголе.
...
Рейтинг: 0 / 0
13.10.2009, 14:29
    #36248032
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
зы,
так я и радуюсь... Конечно, в чем-то это сродни "я знаю каратэ, у-шу, айкидо и еще много других страшных слов", но плюсов больше :-)

ShSerge,
как же ты стар!
Хотя нам тоже досталось какое-то такое наследие... Всё, что помню из целого семестра - это как пыталась запрограммировать некий контроллер, управляющий несколькими лампочками, командами а-ля mov(регистр1,регистр2), cmp, add, inc и в итоге у меня получились таки "бегущие огоньки". Что это было - уже наверное ни в жисть не вспомню... Интересно, когда оно вообще отомрет, насовсем?
...
Рейтинг: 0 / 0
13.10.2009, 14:31
    #36248040
ZeusTheTrueGod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
конечно, это тихий и простой язык, на котором написан
эмулятор компьютера "спектрум" - вот
парсер математических на джаваскрипте - тута , причём вот всё описание парсера -
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
 $P().do_().factor().choice(
 $P().symbol("^").prim().reduce(function(rv) { return Math.pow(rv[ 0 ], rv[ 2 ]); } ),
 $P().element( 0 )), vs);
});
};

 // <Term> ::= <Prim> * <Term> | <Expo> / <Term> | <Prim>
 P4JS.lib.term = function() {
 return this.bind(function(vs) { this.runParser(
 $P().do_().prim().choice(
 $P().symbol("*").term().reduce(function(rv) { return rv[ 0 ] * rv[ 2 ]; } ),
 $P().symbol("/").term().reduce(function(rv) { return rv[ 0 ] / rv[ 2 ]; } ),
 $P().element( 0 )), vs);
 });
 };

 // <Exp> ::= <Term> + <Exp> | <Term> - <Exp> | <Term>
 P4JS.lib.exp = function() {
 return this.bind(function(vs) { this.runParser(
 $P().do_().term().choice(
 $P().symbol("+").exp().reduce(function(rv) { return rv[ 0 ] + rv[ 2 ]; } ),
 $P().symbol("-").exp().reduce(function(rv) { return rv[ 0 ] - rv[ 2 ]; } ),
 $P().element( 0 )), vs);
 });
 };

 // Executor
 function parse(input) {
 var rdiv = document.getElementById('rdiv'),
 error = document.getElementById('error');

 // Reset results
 rdiv.innerHTML = "";
 error.innerHTML = "";

 // Parse and print results or error
 var p = $P().exp().eoi();
 try {
 var result = p.parse(input)[ 0 ];
 rdiv.innerHTML = result;
 } catch(e) {
 var err = (e.print !== undefined)? e.print() : e;
 error.innerHTML = err;
 }
 }; 
...
Рейтинг: 0 / 0
13.10.2009, 14:53
    #36248117
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript in HTML | select'ы
ZeusTheTrueGod,

вполне себе тихие "скромные" примерчики, без криков, холиваров... Замечательно!
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript in HTML | select'ы / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]