Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.09.2015, 19:23
orb orb вне форума
Новичок на форуме
Отправить личное сообщение для orb Посмотреть профиль Найти все сообщения от orb
 
Регистрация: 12.09.2015
Сообщений: 9

Цикл для функции
Есть Select у которого есть id и с тремя option.
На странице есть <span id="priceraw2">Тут какое-то число</span>

Мне нужно было, чтобы при смене опции менялось значение в этом id="priceraw2", например умножалось. Если стоит опция 1, то значение не меняется, если опция 2, то значение умножается на 20, если значение три, то умножается на 40.

Решил таким образом, все отлично работает.


var default_result=document.getElementById('priceraw2').innerHTML;

(function(){
    var sel=document.getElementById('currency-select');
    my_func(sel);
})()

function my_func(sel){
    var 
        opts=[],
        opt,
        val,
        divider={'1':'1','2':'30','3':'40'},
        result=default_result
    ;
    for(var i=0;i<sel.options.length;i++){
        opt=sel.options[i];
        if(opt.selected){
            val=opt.value;
            opts.push(val);
            val=divider[val];
        }
    }
    if(opts.length==0){
        result=default_result;
    }else{
        result=default_result*val;
        result = Math.round(result);
    }
    document.getElementById('priceraw2').innerHTML=result;
}


Но как сделать, чтобы этот скрипт выполнялся везде и для всех?
Например, на странице может быть 20 или 1000 блоков в которых есть <span id="priceraw2">Тут какое-то число</span>, но функция выполняется только для первого блока.

На странице может быть еще всплывающее окно с <span id="priceraw2">Тут какое-то число</span>, как сделать, чтобы скрипт выполнялся для каждого блока и везде?
Ответить с цитированием
  #2 (permalink)  
Старый 12.09.2015, 20:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

orb,
id уникально и for нафиг
Ответить с цитированием
  #3 (permalink)  
Старый 13.09.2015, 14:01
orb orb вне форума
Новичок на форуме
Отправить личное сообщение для orb Посмотреть профиль Найти все сообщения от orb
 
Регистрация: 12.09.2015
Сообщений: 9

мм... не понял
Ответить с цитированием
  #4 (permalink)  
Старый 13.09.2015, 14:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

orb,
пару блоков нарисуйте как они у вас выглядят
Ответить с цитированием
  #5 (permalink)  
Старый 13.09.2015, 16:01
orb orb вне форума
Новичок на форуме
Отправить личное сообщение для orb Посмотреть профиль Найти все сообщения от orb
 
Регистрация: 12.09.2015
Сообщений: 9

Скрипт, который выше все прекрасно делает, только вот изменения происходят для первого блока, а нужно, чтобы это происходило для каждого тега <span id="priceraw2"> </span> который есть на странице или появляется.

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

Думал написать цикл, но что-то не вышло)
Изображения:
Тип файла: jpg primer.jpg (55.7 Кб, 8 просмотров)
Ответить с цитированием
  #6 (permalink)  
Старый 13.09.2015, 17:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

orb,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>

</head>

<body>
<select class="sel" name="" size="1">
<option value="1">1</option>
<option value="50">2</option>
<option value="20">3</option>
</select>
<span class="price" data-num="100"></span>
<span class="price" data-num="200"></span>
<span class="price" data-num="300"></span>
<script>
   var sel = document.querySelector('.sel'), price = document.querySelectorAll('.price'),
   fn = function() {
            var val = this.value;
              [].forEach.call(price, function(item) {
           item.innerHTML = item.dataset.num * val + "$"
       } )};
   sel.addEventListener('change', fn);
   fn.call(sel)
</script>

</body>

</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ajax цикл - кнопка "подробнее" для карточек nvp AJAX и COMET 2 17.12.2013 20:25
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00
Цикл while jquery функции viktorolivier Events/DOM/Window 1 11.03.2012 13:24
Цикл на JavaScripte для Яндекс.Карт (массив координат) drac0Sha Общие вопросы Javascript 0 05.03.2012 23:09
Цикл функции в JS Nikitos* Общие вопросы Javascript 2 31.03.2009 19:51