Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   как разложить массив при выводе в селект (https://javascript.ru/forum/dom-window/45543-kak-razlozhit-massiv-pri-vyvode-v-selekt.html)

imediasun1 05.03.2014 02:14

как разложить массив при выводе в селект
 
есть список значений разделенный запятой = url, (париж, лондон) мне надо вывести его значения в селект
$('.result_block').append('<div class="competitors"><div class="demands"><select><option>'+url+'</option></select></div></div>');

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

danik.js 05.03.2014 02:27

url - у тебя массив?

var $select = $('<select>');
var options = $.map(url, function(item) {
    return new Option(item);
});
$select.append(options);

Дальше сам.

imediasun1 05.03.2014 02:43

url у меня список через запятую, а что такое $.map

danik.js 05.03.2014 02:58

Цитата:

Сообщение от imediasun1
что такое $.map

http://api.jquery.com/jquery.map/

Цитата:

Сообщение от imediasun1
url у меня список через запятую

Значит разбиваешь в массив по запятой: url.split(',')
Если возле запятой могут быть пробелы, то тримишь их через $.trim() (ибо String.prototype.trim нету в старых браузерах)

imediasun1 05.03.2014 03:11

Извините за беспокойство но я сделал так
var $select = $('<select>');
	var options = $.map(url, function(item) {
	    return new Option(item);
	});
	$select.append(options);
$('.result_block').append('<div class="demands">'+$select+'</div></div>');

и мне просто выводится object Object

danik.js 05.03.2014 03:18

Потому что $select - это объект. При конкатенации строк, объект преобразуется в строку как [object Object].
Зацени:
alert({});

imediasun1 05.03.2014 03:37

как же тогда конкатенировать и вставить этот селект в html?
а вот так пустой селект на выходе
var options = $.map(url, function(item) {
	    return new Option(item);
	});
	
	
$('.result_block').append('<div class="demands"><select>'+options+'</select></div>');

рони 05.03.2014 03:38

imediasun1,
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src='http://code.jquery.com/jquery-latest.js'></script>
  <script>
  $(function ()
{

var url = "париж, лондон", select = $('<select/>');
$.each(url.split(','),function() {
    $('<option/>', {
        val:  this,
        text: this
    }).appendTo(select);
});

$('.result_block').append(select);
})


  </script>
</head>

<body>
   <div class="result_block"></div>
</body>

</html>

imediasun1 09.03.2014 15:01

сделал так как рони указал, спасибо все работает, только вот подскажите как обозначить что первое значение selected в такой подаче

danik.js 09.03.2014 15:34

Цитата:

Сообщение от рони
val:  this

Необязательно, если value совпадает с текстом.
Цитата:

Сообщение от imediasun1
первое значение selected

Вариант:
select.prop('selectedIndex', 0);


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