Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.12.2015, 12:34
Аспирант
Отправить личное сообщение для Deymos Посмотреть профиль Найти все сообщения от Deymos
 
Регистрация: 14.01.2013
Сообщений: 33

Формула на JS
Здравствуйте!

Ребят, есть задача умножить формулу:

цена * длина * ширина

цена и длина известны изначально, а вот ширина разная. Помогите создать 3 кнопки с шириной 1м, 2м и 2.5м. Кликнув на кнопку получаем результат.

К примеру:
3 кнопки с шириной 1м, 2м и 2.5м
цена: 500
длина: 1.1

Помогите пожалуйста!
Ответить с цитированием
  #2 (permalink)  
Старый 11.12.2015, 14:06
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

Deymos,
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>

<input type="number" id="width" value="1.1"/>
<input type="number" id="price" value="500"/>
<button id="len1" value="1">1m</button>
<button id="len2" value="2">2m</button>
<button id="len3" value="2.5">2,5m</button>
<hr/>
<span id="result">0</span>

<script>
    var result = document.getElementById('result');
    var width = document.getElementById('width');
    var price = document.getElementById('price');
    document.body.onclick = function (event) {
        var target = event.target;
        if(!target.id.match(/len[123]/ig)) return;
        result.innerHTML = target.value*price.value*width.value;
    }

</script>

</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 11.12.2015, 20:27
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Mess4me, не стоит использовать регулярки там, где они не нужны, тем более с модификаторами, которые тут тоже ни к чему. Может имеет смысл проверять на target.tagName == 'BUTTON'? Ну или как минимум target.indexOf('len').

И совет, в условиях на регулярках лучше использовать метод test.


<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>

<input type="number" id="width" value="1.1"/>
<input type="number" id="price" value="500"/>
<button name="len" value="1">1m</button>
<button name="len" value="2">2m</button>
<button name="len" value="2.5">2,5m</button>
<hr/>
<span id="result">0</span>

<script>
!function() {
    var result = document.getElementById('result'),
        width = document.getElementById('width'),
        price = document.getElementById('price');
    document.body.onclick = function(event) {
        var target = event.target;
        if(target.name == 'len') {
            result.innerHTML = target.value * price.value * width.value;
        }
    }
}();
</script>

</body>
</html>

Последний раз редактировалось ruslan_mart, 14.12.2015 в 14:22.
Ответить с цитированием
  #4 (permalink)  
Старый 11.12.2015, 20:34
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

Ruslan_xDD,
учёл ,спасибо )
Ответить с цитированием
  #5 (permalink)  
Старый 14.12.2015, 09:37
Аспирант
Отправить личное сообщение для Deymos Посмотреть профиль Найти все сообщения от Deymos
 
Регистрация: 14.01.2013
Сообщений: 33

Ребят спасибо огромное! Работает! Всем клацнул по спасибо!
Подскажите, у меня на странице есть два элемента с id=price, как из них мне выбрать второй?

Заранее спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 14.12.2015, 09:42
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Deymos, id уникален, он должен быть один. Лучше сменить на name:

var price = document.getElementsByName('price');

price[0].value = 123;
price[1].value = 456;
Ответить с цитированием
  #7 (permalink)  
Старый 14.12.2015, 09:44
Аспирант
Отправить личное сообщение для Deymos Посмотреть профиль Найти все сообщения от Deymos
 
Регистрация: 14.01.2013
Сообщений: 33

Сообщение от Ruslan_xDD Посмотреть сообщение
Deymos, id уникален, он должен быть один. Лучше сменить на name:

var price = document.getElementsByName('price');

price[0].value = 123;
price[1].value = 456;
сменю на name,но у меня эти значения генерируются автоматически, соответственно и взять нужно автоматически второй... Помогите пожалуйста и получить из него значение (из второго)
Ответить с цитированием
  #8 (permalink)  
Старый 14.12.2015, 09:57
Аспирант
Отправить личное сообщение для Deymos Посмотреть профиль Найти все сообщения от Deymos
 
Регистрация: 14.01.2013
Сообщений: 33

Вот такие дивы

<div itemprop="offers" itemscope="" itemtype="http://schema.org/Offer">
<input type="number" id="price" value="185.13" style="display: none;"></p>
</div>

<div class="single_variation">
<span class="price">
<span class="amount">212.41&nbsp;руб.</span>
<input type="number" id="price" value="212.41" style="display: none;"></span>
</div>
Ответить с цитированием
  #9 (permalink)  
Старый 14.12.2015, 10:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Deymos,
price = document.querySelectorAll('#price')[1];


лучше изучить вашу cms чем придумывать как обойти правило.
Ответить с цитированием
  #10 (permalink)  
Старый 14.12.2015, 10:08
Аспирант
Отправить личное сообщение для Deymos Посмотреть профиль Найти все сообщения от Deymos
 
Регистрация: 14.01.2013
Сообщений: 33

Сообщение от рони Посмотреть сообщение
Deymos,
price = document.querySelectorAll('#price')[1];


лучше изучить вашу cms чем придумывать как обойти правило.
странно, но ваше условие не работет, использую так:

<script>
    var result = document.getElementById('result');
    var width = document.getElementById('width');
    var price = document.getElementById('price');
price = document.querySelectorAll('#price')[1];
    document.body.onclick = function (event) {
        var target = event.target;
        if(!target.id.match(/len[123]/ig)) return;
        result.innerHTML = target.value*price.value*width.value;
    }

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS <-> Server Js. Severtain Общие вопросы Javascript 1 05.11.2011 15:36
JS Coaching для стартапа OlgaAyva Работа 12 27.09.2011 22:18
Картинка обрабатывается js 4yBaK Общие вопросы Javascript 10 11.09.2011 09:28
Срочно JS developer okp Работа 13 23.08.2011 16:16
Срочно JS developer okp Работа 7 14.06.2011 14:54