Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать так чтоб если в инпут ввести процент от 1 до 100, то... (https://javascript.ru/forum/misc/52461-kak-sdelat-tak-chtob-esli-v-input-vvesti-procent-ot-1-do-100-a.html)

Влад Громов 20.12.2014 14:23

Как сделать так чтоб если в инпут ввести процент от 1 до 100, то...
 
Как сделать так чтоб если в инпут ввести процент от 1 до 100, то в другую ячейку таблицы выведется процент от заданного числа
и ещё это надо завернуть в функцию, просто я javascript только изучаю

krutoy 20.12.2014 22:44

<html>
  <head>


  </head>
  <body>

<table>
<tr> <td>          type number: </td> <td> type percent:          </td> <td> result </td> </tr>
<tr> <td> <input id="number" /> </td> <td> <input id="percent" /></td> <td> <input id="result" > </td> </tr>
</table>
<button> get </button>

<script>

get=document.querySelector.bind(document)
number=get("#number")
percent=get("#percent")
result=get("#result")
button=get("button")

button.onclick=function(){result.value=percent.value*(number.value/100)}

</script>
</body>
</html>

krutoy 20.12.2014 23:00

можно и без кнопки
<html>
  <head>


  </head>
  <body>

<table>
<tr> <td>          type number: </td> <td> type percent:          </td> <td> result </td> </tr>
<tr> <td> <input id="number" /> </td> <td> <input id="percent" /></td> <td> <input id="result" > </td> </tr>
</table>

<script>

get=document.querySelector.bind(document)
number=get("#number")
percent=get("#percent")
result=get("#result")

getPercent=function(){
   if((number.value==="")||(percent.value==="")) return result.value="waiting..."
  result.value=percent.value*(number.value/100)
}
number.oninput=getPercent
percent.oninput=getPercent

</script>
</body>
</html>

Влад Громов 21.12.2014 09:08

а можно ли сделать чтоб не по ID а вот так:
.getElementById('row_0').cells[2].getElementsByTagName('input').value

Просто у меня большая таблица и там будет много таких подсчётов, и по id делать будет очень трудно, так как придётся вписывать около 1000 id

krutoy 21.12.2014 10:54

Вот так, вроде, получается
<html>
  <head>
 
 
  </head>
  <body>
 
<table>
<tr> <td>          type number: </td> <td> type percent:          </td> <td> result </td> </tr>
<tr> <td> <input /> </td> <td> <input /></td> <td> <input /> </td> </tr>
<tr> <td> <input /> </td> <td> <input /></td> <td> <input /> </td> </tr>
<tr> <td> <input /> </td> <td> <input /></td> <td> <input /> </td> </tr>
</table>
 
<script>
 
table=document.querySelector("table")
trs=(table.querySelectorAll("tr"))

add=function(inputs){
    var number=inputs[0]
    var percent=inputs[1]
    var result=inputs[2]
    var getPercent=function(){
      if((number.value==="")||(percent.value==="")) return result.value="waiting..."
      result.value=percent.value*(number.value/100)
    }
   number.oninput=getPercent
   percent.oninput=getPercent
}

for(var i=1; i<trs.length; i++) {
   add(trs[i].querySelectorAll("input"))
}

</script>
</body>
</html>

Влад Громов 21.12.2014 14:18

Спасибо вам за скрипт, конечно придётся под пилить, но вы мне очень помогли

рони 21.12.2014 14:41

:write:
на всякий случай
Цитата:

Сообщение от Влад Громов
процент от заданного числа

result.value=percent.value*(number.value/100)

krutoy 21.12.2014 14:44

рони,
Вроде, мой вариант работает, в чем проблема? Я исходил из того, что заданное число -- это поле number. Поясни пжста, я в мат-ке не силен:)

рони 21.12.2014 14:47

krutoy,
6 процент 1 результат 0.06
у ТС результат 16.666666666666668

Влад Громов 21.12.2014 14:56

да это я исправил
result.value=(number.value*percent.value)/100


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