как вывести сумму 3х (value) select

Доброго времени суток!
подскажите как вывести сумму всех value в select
value берется из options

$(document).ready(function(){

    $("select").change(function () {
          var str = "";
          $("select option:selected").each(function () {
                str += $(this).text() + " ";
              });
          $("#test").text(str);
        })
        .change();

  });
это выводит например 1 5 8
надо 14
с уважением!
Юрий Венедиктович
28 мая 2013, 17:12
modx.pro
2 200
0

Комментарии: 8

Алексей Карташов
29 мая 2013, 01:59
0
Ох уж эти жиквери-писалкины. Даже числа сложить без него уже не умеют.
html:
<select multiple>
	<option val="1">1</option>
	<option val="2">2</option>
	<option val="3">3</option>
	<option val="4">4</option>
	<option val="5">5</option>
	<option val="6">6</option>
</select>
js:
// Underscore.js isArray()
var isArray = Array.isArray || function(obj) {
    return toString.call(obj) == '[object Array]';
};

$('select').on('change', function(e) {
    var $this = $(this),
        values = $this.val(),
        summ = 0;
    if (isArray(values)) {
        for (var i = 0, length = values.length; i < length; i++) {
            summ += parseInt(values[i], 10);
        }
    } else {
        summ = values;
    }
    console.log(summ); // <- result
}).triggerHandler('change'); // 'triggerHandler'! Not 'change()' or "trigger('change')"!
    Юрий Венедиктович
    29 мая 2013, 12:26
    0
    мало того эти жеквери-писалкины не могут запустить этот код
    <html>
    <head>
    <script type='text/javascript' src='underscore-min.js'></script>
    <script type="text/javascript" language="javascript">
    // Underscore.js isArray()
    var isArray = Array.isArray || function(obj) {
        return toString.call(obj) == '[object Array]';
    };
    
    $('select').on('change', function(e) {
        var $this = $(this),
            values = $this.val(),
            summ = 0;
        if (isArray(values)) {
            for (var i = 0, length = values.length; i < length; i++) {
                summ += parseInt(values[i], 10);
            }
        } else {
            summ = values;
        }
        console.log(summ); // <- result
    }).triggerHandler('change'); // 'triggerHandler'! Not 'change()' or "trigger('change')"!
    </script>
    </head>
    <body>
    <select multiple>
    	<option val="1">1</option>
    	<option val="2">2</option>
    	<option val="3">3</option>
    	<option val="4">4</option>
    	<option val="5">5</option>
    	<option val="6">6</option>
    </select>
    </body>
    </html>
    в консоль хрома у меня ниче не пишет
    но ход мысли вроде понятен
    попытаюсь сам слепить используя жеквери
      Алексей Карташов
      30 мая 2013, 23:37
      0
      Не, андерскор подключать не надо, я просто функцию из него выдернул, остальное из него для этого примера не нужно.

      Честно говоря, не знаю почему у вас не работает, может потому что из приведённого выше кода видно, что jquery не подключен? :-) Он как раз таки нужен)
      И добавьте доктайп перед тегом html:
      <!DOCTYPE html>
      <html>
      Это доктайп html5, и когда он прописан, то писать атрибуты type и language в теге script уже не надо, можно просто:
      <script>..</script>
      или
      <script scr="/js/scripts.js"></script>
      з.ы. в следующий раз нажимайте ссылку «Ответить» под автором комментария (в данном случае под моим), а не на кнопку «Оставить новый комментарий», потому что при ответе на конкретный коммент автору этого комментария придёт уведомление на почту.
        Юрий Венедиктович
        31 мая 2013, 14:35
        0
        Доброго времени суток, Алексей!
        я jquery подключал скрипт не заработал :(
        Вопчем мне надо создать массив и выдернуть из него отмеченные селесты
        а далее вывести x = a1+a2+a3
        где а данне из массива
        прально я мыслю?
        С уважением
          Алексей Карташов
          31 мая 2013, 15:13
          0
          Как вы определили что он не заработал? Визуально на странице ничего не происходить не будет. Результат суммирования значений выводится в консоль браузера. Это вот эта строка:
          console.log(summ); // <- result
          Дальше вы можете делать с переменной summ всё, что пожелаете — вставить куда-нибудь на страницу или что угодно.
          Если вы не понимаете как это сделать, то читайте основы яваскрипта, например здесь.
          Попробуйте заменить вышеприведённую строчку кода на вот это:
          alert(summ); // <- result
          Если не будет всплывающего окна с результатом, то ошибка действительно где-то в другом месте.
            Алексей Карташов
            31 мая 2013, 15:16
            0
            Кстати вот:
            http://jsfiddle.net/Qm4cp/1/
              Юрий Венедиктович
              31 мая 2013, 20:56
              0
              Спасибо, Алексей что направляете учится, специально для чтива взял планшетник
              в js я новичек
              но про консоль знаю, ни в хроме ни в фаерфоксе
              при выборе селестов ниче не нвыводит
              с уважением
              пошел учится
                Юрий Венедиктович
                31 мая 2013, 21:01
                0
                Http://jsfiddle.net/qm4cp/1/
                Этот код я уже пытался переписать
                но у меня ничего не вышло :(
                но я все равно его добью :)
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          8