Javascript.RU

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

Как получить значение Number из функции?
Пишу калькулятор. Написал функцию для первых двух полей, где вводится только число, которые между собой в последствии должны вычисляться, но застопорился...

Итак есть функция (откуда брать число, куда вписывать число на странице и название данного расчета:

function doCalc(inputDiv, resultDiv, resultName){
  var value;
  $(inputDiv).on("change", function (){
    value = Number($(this).val());
    $(resultDiv).text(resultName +": "+ value + " cm");
  }).change();
}


Вызываем:
doCalc("#input-width", "#width-result", "Ширина");
doCalc("#input-height", "#height-result", "Высота");


Так все работает - функция меняет в нужном месте цифру при изменении инпута.

Не могу сообразить как мне, например, сложить эти функции? Сейчас функция мне отдает undefined, даже если я получаю значение внутри функции, вывожу его на внешнюю переменную.

Или вот так, например не работает:

var width = doCalc(....);
var height = doCalc(....);
console.log(width + height);
Ответить с цитированием
  #2 (permalink)  
Старый 03.05.2016, 23:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Enkille,

function doCalc(inputDiv, resultDiv, resultName){
  var value;
  value = Number($(inputDiv).val());
  $(resultDiv).text(resultName +": "+ value + " cm");
  return value
}
Ответить с цитированием
  #3 (permalink)  
Старый 03.05.2016, 23:22
Интересующийся
Отправить личное сообщение для Enkille Посмотреть профиль Найти все сообщения от Enkille
 
Регистрация: 09.11.2015
Сообщений: 19

Сообщение от рони Посмотреть сообщение
Enkille,

function doCalc(inputDiv, resultDiv, resultName){
  var value;
  value = Number($(inputDiv).val());
  $(resultDiv).text(resultName +": "+ value + " cm");
  return value
}
...... update

невероятно, но сделал. Тупил два вечера, что-то там куралесил неподетски, а нужно было просто вернуть value, а каждой функции вызываемой с нужными параметрами приписать к переменной, а переменные сложить = работает

Последний раз редактировалось Enkille, 03.05.2016 в 23:26.
Ответить с цитированием
  #4 (permalink)  
Старый 03.05.2016, 23:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Enkille,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">

 </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

</script>
  <script>
 $(function(){
function doCalc(inputDiv, resultDiv, resultName){
  var value;
  value = Number($(inputDiv).val())||0;
  $(resultDiv).text(resultName +": "+ value + " cm");
  return value
}
function sum()
{
var width = doCalc("#input-width", "#width-result", "Ширина");
var height = doCalc("#input-height", "#height-result", "Высота");
$("p").text(width + height);
}
$("input").on({"input" : sum});
sum()

   })
  </script>
</head>

<body> <p></p>
  <input type="text" id="input-width" value="10" ><div id="width-result"></div>
  <input type="text" id="input-height" value="23"><div id="height-result"></div>
</body>
</html>

Последний раз редактировалось рони, 03.05.2016 в 23:44.
Ответить с цитированием
  #5 (permalink)  
Старый 04.05.2016, 00:06
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

Мне кажется или в таких делах всякие jQuery только помеха?

Подбешивать стал уже этот фреймворк если честно, хотя я не могу оформить внятно причину этого...

Последний раз редактировалось aklis, 04.05.2016 в 00:12.
Ответить с цитированием
  #6 (permalink)  
Старый 04.05.2016, 00:21
Интересующийся
Отправить личное сообщение для Enkille Посмотреть профиль Найти все сообщения от Enkille
 
Регистрация: 09.11.2015
Сообщений: 19

Сообщение от aklis Посмотреть сообщение
Мне кажется или в таких делах всякие jQuery только помеха?

Подбешивать стал уже этот фреймворк если честно, хотя я не могу оформить внятно причину этого...
Я не против чистого JS. Но познакомившись с jquery мне показалось намного проще с ним и быстрее, чем писать все то же самое на JS.
Ответить с цитированием
  #7 (permalink)  
Старый 07.05.2016, 00:02
Интересующийся
Отправить личное сообщение для Enkille Посмотреть профиль Найти все сообщения от Enkille
 
Регистрация: 09.11.2015
Сообщений: 19

Попытался дописать самостоятельно функцию, но уже несколько часов сижу и туплю над некоторыми моментами, подскажите кто может как это сделать. Честно гуглил и перепробовал все что мог. И думаю нашел то что надо, правда не знаю как это применить в моем случае. Вот например: http://api.jqueryui.com/selectmenu/#event-select и вот http://stackoverflow.com/a/26697847/6227306

Есть немного измененная функция, которую мне очень вежливо поправил Рони, за что ему огромный респект.
$(function() {
  function doCalc(inputDiv, resultDiv, resultName){
    var value;
    value = Number($(inputDiv).val()) || 0;
    $(resultDiv).text(resultName + ": " + value + " cm");
    return (value / 100);
  }

  function sum(){
    var width = doCalc("#input-width", "#width-result", "Ширина");
    var height = doCalc("#input-height", "#height-result", "Высота");
    $("#result").text( Math.round(((width * height) * 0.4) + (width * height) * MODEL) + " kg" );
  }
   
  $("input").on({
    "input": sum
  });
  sum();
});


И есть функция jQuery UI Selectmenu, которую я использую для оформления select>option. При загрузке страницы она скрывает реальные select>option и имплементирует список на основе ul>li, в связи с чем я не могу получить спокойно value этого списка, чтобы закончить расчет в первой функции.

(width * height) * 0.4) + (width * height) * MODEL)

В этом случае MODEL == value (option value="9" например).

Помогите доделать скрипт, я почти уже у финиша для его завершения, но завис конкретно.

Вот код jquery ui:

$(function () {
  $.widget("custom.iconselectmenu", $.ui.selectmenu, {
    _renderItem: function (ul, item) {
      var li = $("<li>", {
        text: item.label
      });
      
      if (item.disabled) {
        li.addClass("ui-state-disabled");
      }      

      $("<span>", {
          style: item.element.attr("data-style"),
          "class": "ui-icon " + item.element.attr("data-class")
        })
        .appendTo(li);

      return li.appendTo(ul);
    }
  });
  
  $("#modello")
    .iconselectmenu()
    .iconselectmenu("menuWidget")
    .addClass("ui-menu-icons customicons");
});


И на всякий случай так выглядит список:

<select class="state" name="modello" id="modello">
  <option value="4.5" data-class="pvc-45">PVC 4,5 Kg</option>
  <option value="6" data-class="pvc-60">PVC 6 Kg</option>
</select>


Мне нужно вернуть как значение value так и значение самого элемента option чтобы встроить его в нужный див на странице.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как извлечь значение class'a? LungDesire Общие вопросы Javascript 2 19.08.2015 18:50
Выводить значение раньше переменных Гробовщик Общие вопросы Javascript 11 10.09.2013 08:42
Как получить значение переменной из callback функции? Хиросим AJAX и COMET 5 24.04.2012 09:32
Как получить значение атрибута width в теге img, находящемся в скрытом диве? kolyan1983 Internet Explorer 4 21.03.2011 15:14
Как из функции X id=setInterval(X,100) получить id? glsheff Общие вопросы Javascript 4 28.05.2010 01:46