Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Помогите сделать список из выборки (https://javascript.ru/forum/jquery/16258-pomogite-sdelat-spisok-iz-vyborki.html)

shaltay 31.03.2011 17:51

Помогите сделать список из выборки
 
Доброго времени. Такая задача:
Есть множество тегов <td id=name>anytext</td> с разным текстом (это прайс).
Делаю выборку по тексту:
var lalala = $('td[id=name]').text();


Надо с помощью этого метода выбрать все возможные тексты из документа и поместить их в список <select> в html.

Помогите советом, как правильнее это сделать.

melky 31.03.2011 18:32

ухуху

удалил код

бывает :)

shaltay 31.03.2011 18:53

Спасибо! Сейчас буду разбираться, вроде бы все понятно стало. Если получится, отпишусь.

Но вот теперь другая проблема по серьезней встала:
как можно получить эту таблицу с другой страницы?
У меня прайс на одной странице, а список должен вылезать на всех.

melky 31.03.2011 18:57

Цитата:

Сообщение от shaltay (Сообщение 98747)
Спасибо! Сейчас буду разбираться, вроде бы все понятно стало. Если получится, отпишусь.

Но вот теперь другая проблема по серьезней встала:
как можно получить эту таблицу с другой страницы?
У меня прайс на одной странице, а список должен вылезать на всех.

тогда это лучше делать через php и базу данных.

способ через JS требует этой таблицы на странице

shaltay 31.03.2011 18:57

эээ, и все, кода не будет больше?)

shaltay 31.03.2011 19:00

Цитата:

Сообщение от melky (Сообщение 98750)
тогда это лучше делать через php и базу данных.

способ через JS требует этой таблицы на странице

Да, я уже сижу и думаю об этом. Но с базами у меня серьезные проблемы, думаю, что ничего у меня не получится :) В таком случае надо сделать таблицу не на html, а которая будет создаваться в пхп из базы. Это убьет сразу много зайцев, но браться за это боязно.

melky 31.03.2011 19:06

нет, что вы) базы можно понять на 30 минут, там нет ничего сложного. ну,только расфасовывание результатов :)

лучше формировать select через пхп (и базу), кешировать его в html (в папке cache, напр.).. а потом включать (или инклудить) его (через пхп,опять таки)

shaltay 31.03.2011 19:30

Цитата:

Сообщение от melky (Сообщение 98755)
нет, что вы) базы можно понять на 30 минут, там нет ничего сложного. ну,только расфасовывание результатов :)

Думаю, что надо изучить. Но если бы мне сейчас за это заплатили, то я задался бы целью. Думаю, что пока оставлю как есть - статичный прайс. А если понадобится его править, то предложу заказчику сделать все грамотно.

Так на js/jquery сделать это невозможно (подгружать инфу с другой страницы)?

melky 31.03.2011 19:46

легко. щас опишу
.........
пусть это будет дано в формате JSON.
почему именно он ? он мне нравится :) в инете можно найти кучу плюсов за него ( например, можно делать AJAX запросы на другой домен и получать JSON объекты.. да и вообще. удобнее способа не придумать)

ответ с сервера ( т.е. html страница)

Код:

{

      "1" : {    "1" : "1-1",
                  "2":"2-1",
                  "3":"3-1"
        } ,

        "2" : {  "1" : "1-2",
                      "2":"2-2",
                      "3":"3-2"
        }

 }

селект многострадальный...
 <select id="sel"></select>

<script src="http://yandex.st/jquery/1.5.1/jquery.min.js"></script>

<script>
// тут уже получили типа данные. для получения данных делаем то,что будет снизу :)

var t = '{ "1" : { "1" : "1-1","2":"2-1","3":"3-1"  } , "2" : { "1" : "1-2","2":"2-2","3":"3-2"  }  }'

// обратите внимание, это строка ( с сервера получаем строку)

 t = $.parseJSON(t); 
// теперь это объект

var a = []; // массив найденного текста (ну, вы понели)))

// бедный мой код... он ужасен, но лучшего способа я не придумал

//либо так
for ( var k in t) { for(var h in t[k]) {a.push( t[k][h]);}  }

// либо через рекурсивный $.each или такой же (рекурсивный) for.. in

/*  теперь a (массив) содержит это :

0: "1-1"
1: "2-1"
2: "3-1"
3: "1-2"
4: "2-2"
5: "3-2"

проходимся по нему циклом и все, добавляем их к селекту
*/
var sel = document.getElementById("sel");

for(var i = 0, b= a.length; i<b; i++){
sel.options[i] = new Option(a[i],i);
}


</script>


а теперь как получить объект (т.е.,это { "1" : { "1" : "1-1","2":"2-1","3":"3-1" } , "2" : { "1" : "1-2","2":"2-2","3":"3-2" } } )

под рукой AJAX нету,поэтому только опишу
$.getJSON( *!*' ВАШ URL' */!* , function(t) {

  // обрабатываем данные. t - OBJECT , как я понял из документации :) .

for ( var k in t) { 

      for(var h in t[k]) { 

                    a.push( t[k][h]); 

        } 

 }

var sel = document.getElementById("sel"); # это наш селект

for(var i = 0, b= a.length; i<b; i++)
      sel.options[i] = new Option(a[i],i);


});



как сформировать JSON объект - читайте в доках

вот тут как сформировать json объект php.net/manual/en/function.json-encode.php

как получать то,что потом будет формироваться в json объект - тут я уже не могу помочь :) пхп не мое

shaltay 31.03.2011 21:51

Огромное спасибо. Но я последовал Вашему совету и все-таки изучил таблицы и уже сделал таблицу из базы. Вопросы наверняка возникнут, но теперь наверное это уже не в этот форум.

Чтобы не начинать новую тему, спрошу вот что:
видимо вопрос про регклярные выражения.

есть строка, к примеру:
"Это очень хорошая штука, называется «SATIN». Покупайте."

В этой строке нужно выбрать слово «SATIN» и присвоить ему определенный стиль. Как это можно сделать?


Часовой пояс GMT +3, время: 06:10.