Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   При вводе value прибавляется цена (https://javascript.ru/forum/dom-window/80289-pri-vvode-value-pribavlyaetsya-cena.html)

thislegion 18.05.2020 15:28

При вводе value прибавляется цена
 
Подскажите как сделать чтобы при вводе нового value цена везде менялась и при повторном нажатии не прибавлялась. И менялась только если ввести новое значение value.
<input id="vis" type="radio" name="valuta" checked="checked" value="give">Отдаю
      <br>
      <input type="radio" name="valuta" value="get">Получаю
      <br>
      <input id="summa" type="text" name="summa">
      <br>
      <button onclick = "myFunc()">Нажми меня</button>
  <table>
        <thead>
            <tr>
                <th>Обменник</th>
                <th>Отдаете</th>
                <th>Получаете</th>
                <th>Резерв</th>
            </tr>
        </thead>
        <tbody>
<tr class="trvaluts">
<td>Обменник1</td>
<td><span id="in">0.9995</span> WMR</td>
<td class="out">1 YAMRUB</td>
<td>55618.8</td>
</tr>
<tr class="trvaluts">
<td>Обменник2</span> </td>
<td><span id="in">1.15</span> WMR</td>
<td class="out">1 YAMRUB</td>
<td>150000</td>
</tr>
<tr class="trvaluts">
<td>Обменник3</td>
<td id="in">1.01</span> WMR</td>
<td class="out">1 YAMRUB</td>
<td>1270020</td>
</tr>
            
        </tbody>
    </table>
    </td>
  </tr>
</table>     
<script>

function myFunc() {

  let check = document.getElementById('vis').checked;

if (check == true) 
{
  
  let int = Number(document.getElementById("in").innerHTML);//преобразуем строку в число
  let summa = Number(document.getElementById('summa').value);
  let rez = int + summa;

document.getElementById("in").innerHTML = rez;

} 
//myFunc = () => {};//чтобы функция сработала одни раз
}
</script>

laimas 18.05.2020 17:58

Цитата:

Сообщение от thislegion
Number(document.getElementById("in").innerHTML);

Это будет касаться только первого из трех, последующие будут игнорированы так как ID, это уникальное значение.

thislegion 19.05.2020 09:51

Цитата:

Сообщение от laimas (Сообщение 524499)
Это будет касаться только первого из трех, последующие будут игнорированы так как ID, это уникальное значение.

Я знаю. Мне как раз и нужно чтобы изменения были где id=in

рони 19.05.2020 10:30

Цитата:

Сообщение от thislegion
Я знаю. Мне как раз и нужно чтобы изменения были где id=in

:blink:

laimas 19.05.2020 12:07

Цитата:

Сообщение от thislegion
нужно чтобы изменения были где id=in

И это где?

sergeantpepper 19.05.2020 14:46

Цитата:

Сообщение от thislegion (Сообщение 524533)
Я знаю. Мне как раз и нужно чтобы изменения были где id=in

Атрибут id является уникальным, другими словами на странице должен быть только один элемент с id="in". Альтернативой может выступить атрибут class, который может быть неуникальным.

thislegion 19.05.2020 17:34

Кто-нибудь подскажите почему length показывает 6, когда в коде всего 3 id равные In?

<input id="vis" type="radio" name="valuta" checked="checked" value="give">Отдаю
<br>
<input type="radio" name="valuta" value="get">Получаю
<br>
<input id="summa" type="text" name="summa">
<br>
<button onclick = "myFunc()">Нажми меня</button>
<table>
<thead>
<tr>
<th>Обменник</th>
<th>Отдаете</th>
<th>Получаете</th>
<th>Резерв</th>
</tr>
</thead>
<tbody>
<tr class="trvaluts">
<td>Обменник1</td>
<td><span id="in">0.9995</span> WMR</td>
<td class="out">1 YAMRUB</td>
<td>55618.8</td>
</tr>
<tr class="trvaluts">
<td>Обменник2</span> </td>
<td><span id="in">1.15</span> WMR</td>
<td class="out">1 YAMRUB</td>
<td>150000</td>
</tr>
<tr class="trvaluts">
<td>Обменник3</td>
<td><span id="in">1.01</span> WMR</td>
<td class="out">1 YAMRUB</td>
<td>1270020</td>
</tr>

</tbody>
</table>
</td>
</tr>
</table>
<script>

function myFunc() {

  let check = document.getElementById('vis').checked;

if (check) 
{
  
 var int = document.getElementById("in");
 var summa = document.getElementById("summa").value;
 //document.write(summa.length);
document.write(int.innerHTML.length);

} 
//myFunc = () => {};//чтобы функция сработала одни раз
}
</script>

рони 19.05.2020 17:47

Цитата:

Сообщение от thislegion
подскажите почему length показывает 6,

<span id="in">0.9995</span> потому-что 6 символов

рони 19.05.2020 17:49

Цитата:

Сообщение от thislegion
когда в коде всего 3 id равные In?

а зачем так делать, если вам уже трое сказали, что это плохо.

laimas 19.05.2020 17:51

Цитата:

Сообщение от thislegion
когда в коде всего 3 id равные In

Для JS только один, первый найденный! Вам уже трижды сказали, что атрибут id означает уникальный глобальный идентификатор на странице, а вы все лепите горбатого.


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