Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Помогите с celect-om (https://javascript.ru/forum/dom-window/8422-pomogite-s-celect-om.html)

BorisBritva 24.03.2010 19:32

Помогите с celect-om
 
Люди помогите плжалуйста!

У меня вот такая задача.
Надо менять фотку взависимости от id пользователя.

Есть select

<select id="id_user">
<option value="1">Petr</option>
<option value="2">Vasia</option>
</select>

Пытаюсь сделать так:
но на самом деле я незнаю получится или нет.

Надо вставить value select-a в ссылку

<script language="JavaScript" type="text/JavaScript">
// замена фото
$('#id_user').click(function() {
$("#photo").html('<img src="noindex/images_user/(Вот сюда надо вставить!).jpg">');
});
</script>
как это сделать?

Если я чтото не правильно делаю направьте Плиз.

Octane 24.03.2010 19:56

$("#id_user").change(function () {
    $("#photo img").attr("src", this.options[this.selectedIndex].value);
});

BorisBritva 24.03.2010 20:53

Спасибо. Но я недогнал. Как мне в то место подставить полученй результат? Спасибо.

Octane 24.03.2010 21:17

конкатенация строк

BorisBritva 25.03.2010 08:31

А пимер не покажете?

BorisBritva 25.03.2010 10:07

Я попробовал вот так но не получается:
$('#photo').append("<img src='noindex/images_user/").append(this.options[this.selectedIndex].value).append(".jpg'>");

когда вставляю:
alert("<img src='noindex/images_user/").append(this.options[this.selectedIndex].value).append(".jpg'>");

Выводит: <img src='noindex/images_user/

Сделал так:
предваоительно создав переменную id
alert("<img src='noindex/images_user/"+id+".jpg'>");


Выводит:<img src='noindex/images_user/undefined.jpg'>

Shaci 25.03.2010 11:35

Цитата:

.append(".jpg'>");
вот это точно ошибка

SkyLight 25.03.2010 11:37

Цитата:

$('#photo').append("<img src='noindex/images_user/").append(this.options[this.selectedIndex].value).append(".jpg'>");
Уважаемый, а вы вообще понимаете, что делает append? Судя по коду - нет, даже и близко. Изучите, пожалуйста, как добавляются элементы на страницу с помощью jQuery, как изменяются атрибуты этих элементов.

Shaci 25.03.2010 11:41

Цитата:

Сообщение от Octane (Сообщение 48964)
конкатенация строк

плюсики используйте, чтобы строки объединять

BorisBritva 25.03.2010 12:11

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

Если вам это так трудно, то можно вообще ничего не писать.

Принижая когото сам не возвысишся!

SkyLight 25.03.2010 12:41

Просто сказать - нельзя. А непросто - так я уже дал все необходимые рекомендации, надо им только последовать. там ведь не написано ничего сложного или лишнего.

Shaci 25.03.2010 13:41

Цитата:

Сообщение от BorisBritva (Сообщение 49002)
Спасибо конечно. Но в место того чтобы принижать кого-то и тратить время на написание этого текста, можно просто показать как это делается.
Вам наверное трудно с людьми общаться если вы считаете себя гурру.

Если вам это так трудно, то можно вообще ничего не писать.

Принижая когото сам не возвысишся!

Так вот же код, уже написан был, осталось совсем чуть-чуть, волшебный плюсик решит ваши проблемы.
$("#id_user").change(function () {
$("#photo img").attr("src", this.options[this.selectedIndex].value + здесь должна происходить контакетация );
});

BorisBritva 25.03.2010 14:07

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

И что к чему надо прибавлять я непонимаю.

Shaci 25.03.2010 14:15

конкатенация строк
Потому что она так пишется:) , а я ошибся при ее написании.
Перегуглите плиз.

Nekromancer 25.03.2010 14:31

Ну ёпт, говорю по русски - соединение строк. Эту функцию выполняет оператор "+".
В jQuery метод append не добавляет строку, а из строки создаёт объект и добавляет его, если конечно строка правильная.
$('#id_user').change(function() {
$("#photo").html('<img src="noindex/images_user/'+this.value+'.jpg">');
});


П.С. Что бы вы не чувствовали, что вас принижают - освойте самые элементарные вещи как в жизни, так и тут - в программировании. Тогда вас никто принижать не будет.

BorisBritva 25.03.2010 15:07

В жизни меня ни кто не принижает. И принижать не посмеет!

Учитывая то, что мне еще не попадался ни один нормальный экземпляр (пособие) в котором доступными словами и примерами объясняется, что, как и почему, я этих элементарных вещей не знаю.

В данном примере Вы конкретно объяснили что как и почему.
В место того чтобы писать типа вы ничего не умеете и тд. и тп.
За это я Вам благодарен.

Буду еще больше благодарен, если дадите ссылочку на пособия по jQuery
и js в которых автор может доходчево объяснить и показать пример.

спасибо!

Shaci 25.03.2010 15:17

если у вас достаточно времени на обучение,
могу посоветовать
1. По верстке
http://softwaremaniacs.org/blog/category/primer/
там набор статей
2. По чистому js, - книгу Фленагана все-таки
http://javascript.ru/book (самая верхняя)
+ статьи с этого сайта: учебник javascript и основные элементы языка
+ По сложным вопросам писать на форуме

Цитата:

ни один нормальный экземпляр (пособие) в котором доступными словами и примерами объясняется
скорее всего и не попадется, идеальную книгу, где все было бы полностью объяснено сложно найти.

потом по jquery
http://www.slyweb.ru/
и книжку какую-нить, если будет желание

Nekromancer 25.03.2010 15:31

Тут по jQuery - http://www.linkexchanger.su/sitemap

А то, где было доходчиво написано про JS уже закрыто) Читайте просто стандарты языка )

BorisBritva 25.03.2010 15:34

Цитата:

Сообщение от Shaci
скорее всего и не попадется, идеальную книгу, где все было бы полностью объяснено сложно найти.

Есть достойные экземпляры. Точнее сказать будут. Вот я их и жду!

Я по ним изучал php. По этим курсам конечно не создашь чтото типа mail.ru но все азы разжованы, перемолаты и в рот положены.

Скоро должны выйти по js.

http://ruseller.com/

Автор ресурса Евгений Попов

Специализируется на видеокурсах.

За ссылочки спасибо. Обязательно проиндексирую :)

Nekromancer 25.03.2010 15:35

А маил.ру не на php :D

BorisBritva 25.03.2010 15:51

Я имею в виду, что там маловато инфы для того чтобы написать такой сайт.
Там собраны все азы и все доходчиво объяснено. Для начала лучше не найдешь!

kibal4iw 25.03.2010 18:26

Прочитал название темы, сам попробовал решить эту задачу. В JS пока не сильно силен, сделал как мог. Моя проблема в том, что код не адекватно работает в Mozilla, ф во всех броузерах норм. Не могли бы подсказать в чем моя ошибка?

<form action="" method="get" name="user" id="user">
    <select id="user_id">
        <option value="1" /> User 1 
        <option value="2" /> User 2
        <option value="3" /> User 3
        <option value="4" /> User 4
        <option value="5" /> User 5
    </select><br />
    <input type="button" id="but" value="Change" />
</form>

<img src="" id="imgUser" width="350">


<script>
    var but = document.getElementById("but");
	onload = f_ChangeUse;
	
	if (but.addEventListener) {
		but.addEventListener("click", f_ChangeUse, false);
	} else {
		but.attachEvent("onclick", f_ChangeUse);
	}
	
	function f_ChangeUse() {
		var val = document.forms("user").user_id.value;
		document.getElementById("imgUser").src = "img/user_" + val  + ".jpg";	
	}
</script>

SkyLight 25.03.2010 18:33

В 12 строке не круглые скобки, а квадратные надо. Да, и кто вас учил так писать option? Чтобы было валидно, надо так:
<option value="1">User 1</option>

И тегу script лучше указать type="text/javascript"

Nekromancer 25.03.2010 18:33

<form action="" method="get" name="user" id="user">
    <select id="user_id">
        <option value="1" /> User 1
        <option value="2" /> User 2
        <option value="3" /> User 3
        <option value="4" /> User 4
        <option value="5" /> User 5
    </select><br />
    <input type="button" id="but" value="Change" />
</form>
 
<img src="img/user_1.jpg" id="imgUser" width="350">
<script>
    var but = document.getElementById("but");
    onload = f_ChangeUse;
     
    if (but.addEventListener) {
        but.addEventListener("click", f_ChangeUse, false);
    } else {
        but.attachEvent("onclick", f_ChangeUse);
    }
     
    function f_ChangeUse() {
        var val = document.forms["user"].user_id.value;
        document.getElementById("imgUser").src = "img/user_" + val  + ".jpg";  
    }
</script>

kibal4iw 25.03.2010 18:51

Цитата:

Сообщение от SkyLight (Сообщение 49067)
Чтобы было валидно, надо так:
<option value="1">User 1</option>

И тегу script лучше указать type="text/javascript"

Я за валидностью сейчас не гонюсь, хотя соглашусь с вами полностью. :yes:

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

BorisBritva 27.03.2010 16:22

Люди добрые. Помогите пожалуйста.

Есть 2 разных селекта
<select id="on_user">
<option value="1">Один</option>
<option value="2">Два</option>
<option value="3">Три</option>
</select>


<select id="id_user">
<option value="1">Петя</option>
<option value="2">Вася</option>
<option value="3">Лена</option>
</select>


Надо сделать чтобы при выборе в первом селекте выделялся option во втором с таким же value.
Я работаю с jQuery.

Вот пример который выдиляет первый option во втором селекте.
$('select[id=id_user] option:first').attr('selected', 'yes');

Может кто подскажет как сделать чтобы выделялся тот у которого такой же value?!

Я сделал вот так:
$('#on_user').change(function() {
$('select[id=id_user] option:eq('+this.value+')').attr('selected', 'yes');
});

Но почемуто в Опере работает только на последний option. IE вообще не воспринимает. В FF все работает.

Может кто подскажет как лучше сделать?

Shaci 27.03.2010 23:23

Цитата:

В FF все работает
нигде не работает, неправильно
что по вашему делает селектор eq(n)?

В качестве быстрой правки можно вот так сделать
$('#on_user').change(function() {
$('select[id=id_user] option:eq('+(this.value-1)+')').attr('selected', 'yes');
});

но это будет работать (по крайней мере в IE6 и FF), если value по порядку будут идти,
а вообще нужно все переделать

bassolo 18.04.2010 17:18

Напишите, пожалуйста, скрипт:)

есть формы: select (значение1, значения2); text1;text2

нужно следущее:

при выборе значения 1 содержимое формы text = 1,text2 виден
при выборе значения 2 содержимое формы text = 2, text2 не виден

html:
<select name="sel">
<option>значение1</option>
<option>значения2</option>

<input type="text" name="text1">
<input type="text" name="text2" value="TEXT2">

Спасибо)

SkyLight 18.04.2010 18:46

Писать скрипт просто так мало кто будет. Вам надо отлавливать событие onchange у селекта, проверять текущее значение и в зависимости от него устанавливать value у text1 и менять display или visible у text2. Ключевики я дал, в поиск.

bassolo 22.04.2010 11:01

ну вот, набрасал что-то...
только работает с цифрами, а с текстом - нет.
т.е.

это работает
if (l1=="2")
 document.formText.t1.value="235";


а это не работает
if (l1=="text")
document.formText.t1.value="235";

Вот весь код:
<script>
function uklon()
{
var objSel = document.getElementById("SelectId"); 

 l1=objSel.selectedIndex
if (l1=="1")
 document.formText.t1.value="4567";
 document.formText.t1.style.display="inline";  
 if (l1=="2")
 document.formText.t1.value="235";
 if (l1=="text")
 document.formText.t1.style.display="none"; 
}
</script>
<form name="formText">
<select   onChange="uklon()" id="SelectId">
<option  >text</option>
<option  >1</option>
<option  >2</option> 
<input type="text"  name="t1" value=""> 
</form>


почему?

SkyLight 22.04.2010 11:53

Вы бы хоть сами попытались разобраться в том, что написали. У вас в l1 никогда и не будет текстового значения. А все потому, что selectedIndex возвращает индекс выбранной опции (спасибо, кэп), т.е. 0, 1, 2 и до самого конца. Вообще принято для option указывать value, или в вашей книжке про это не написано? Тогда шестая строка превращается в l1=objSel.selectedIndex.

ЗЫ. Начните, наконец, учить жабаскрипт по нормальным материалам.

bassolo 22.04.2010 14:08

SkyLight,
для l1 нужно присвоить значение, выбранное в select'е, то есть активного option, так я понимаю?

l1=objSel.value к этому не приводит.

SkyLight 22.04.2010 14:38

Если вы не добавили value к option'ам, то естественно ничего не получится

bassolo 22.04.2010 16:52

блин, как все просто... я ламер..
SkyLight, +1:)


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