Javascript.RU

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

Увеличение количества
Всем привет )

Есть форма с текстовым полем и кнопкой увеличения значения поля на 1:

<form>
    <input type="text" size="5" value="1" />
    <input type="button" onclick="add(this)" value="+" />
</form>


И сам js код:

function add(element){
    element.parentNode.getElementsByTagName('input')[0].value = parseInt(element.parentNode.getElementsByTagName('input')[0].value) + 1;
}


Подскажите, есть ли более изящное решение и что можно поправить в этой функции?
Ответить с цитированием
  #2 (permalink)  
Старый 10.05.2012, 17:34
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

<input type="text" id="inp" size="5" value="1">
<input type="button" value="+" 
  onclick="
    inp.value = parseInt(inp.value) + 1
">
Ответить с цитированием
  #3 (permalink)  
Старый 10.05.2012, 18:16
Интересующийся
Отправить личное сообщение для Kaba Посмотреть профиль Найти все сообщения от Kaba
 
Регистрация: 18.10.2011
Сообщений: 19

Нет, это совсем не то, id у поля отсутствует.
Возможно добавление id к родителю, но при этом потомки будут анологичными, т.е. что то вроде этого:
<div id="parent">
<form>
    <input type="text" size="5" value="1" />
    <input type="button" onclick="add(this)" value="+" />
</form>
...
<form>
    <input type="text" size="5" value="1" />
    <input type="button" onclick="add(this)" value="+" />
</form>
</div>
Ответить с цитированием
  #4 (permalink)  
Старый 10.05.2012, 19:34
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Kaba
Нет, это совсем не то, id у поля отсутствует.
Что мешает его добавить?

Сообщение от Kaba
Возможно добавление id к родителю, но при этом потомки будут анологичными
Смысл второй половины фразы не совсем (совсем не) понятен.

Не очень-то понятно чего вы хотите добиться, если ваша функция делает то же самое, что и у меня обработчик onclick.
Так лучше??

<div id="myDiv">
<input type="text" size="5" value="1">
<input type="button" value="+" 
  onclick="
    myDiv.children[0].value = parseInt(myDiv.children[0].value) + 1
">
</div>
Ответить с цитированием
  #5 (permalink)  
Старый 11.05.2012, 10:36
Интересующийся
Отправить личное сообщение для Kaba Посмотреть профиль Найти все сообщения от Kaba
 
Регистрация: 18.10.2011
Сообщений: 19

Элементов с формой на странице может быть довольно много и наверное правильнее написать один раз функцию, чем повторять весь этот код в событии. Как раз id тем же и плох, то что как то неразумно задавать к примеру 100 элементам разные id. По классу же слишком сложная выборка, поэтому и приходится извращаться с DOM деревом и фунцией.

Цитата:
Смысл второй половины фразы не совсем (совсем не) понятен.
Т.е. у множества форм, один общий родитель к которому можно задать id.

Последний раз редактировалось Kaba, 11.05.2012 в 10:38.
Ответить с цитированием
  #6 (permalink)  
Старый 11.05.2012, 11:41
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Kaba
Элементов с формой на странице может быть довольно много и наверное правильнее написать один раз функцию, чем повторять весь этот код в событии.
Так и надо было сразу писать, что предполагается много однотипных элементов, каждый из которых должен обладать такими-то качествами (здесь не все умеют читать чужие мысли).

<div id="myDiv" 
  onclick = "
    var a = this.getElementsByTagName('input');
    var e = event.srcElement || event.target;
    if (e.type == 'button') {
      for (i=0; i<a.length; i++) {
        if (a[i] == e) {
          a[i-1].value = parseInt(a[i-1].value) + 1; 
          break;
        }
      }
    }
">

<input type="text" size="5" value="1">
<input type="button" value="+">

<input type="text" size="5" value="1">
<input type="button" value="+">
</div>

<!--для этого не сработает, так как он вне div-->
<input type="text" size="5" value="1">
<input type="button" value="+">


Если хотите вынесите код обработчика в функцию.
Ответить с цитированием
  #7 (permalink)  
Старый 02.07.2012, 14:53
Интересующийся
Отправить личное сообщение для ghrd Посмотреть профиль Найти все сообщения от ghrd
 
Регистрация: 02.07.2012
Сообщений: 10

Сообщение от bes Посмотреть сообщение
<input type="text" id="inp" size="5" value="1">
<input type="button" value="+" 
  onclick="
    inp.value = parseInt(inp.value) + 1
">
Уважаемый, подскажите пожалуйста как добавить ограничение на увеличения/уменьшения значения?
к примеру, могу увеличить поле до 5, а уменьшить только до 1
Ответить с цитированием
  #8 (permalink)  
Старый 02.07.2012, 15:07
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Сообщение от ghrd Посмотреть сообщение
Уважаемый, подскажите пожалуйста как добавить ограничение на увеличения/уменьшения значения?
к примеру, могу увеличить поле до 5, а уменьшить только до 1
<input type="text" id="inp" size="5" value="1">
<input type="button" value="+"
  onclick="
    inp.value = parseInt(inp.value) >= 5 ? '5' : (parseInt(inp.value) < 1 ? '1' : parseInt(inp.value) + 1)
">


осталось только сделать вторую кнопку и присобачить к ней соответствующее условие для уменьшения значения
Ответить с цитированием
  #9 (permalink)  
Старый 02.07.2012, 15:12
Интересующийся
Отправить личное сообщение для ghrd Посмотреть профиль Найти все сообщения от ghrd
 
Регистрация: 02.07.2012
Сообщений: 10

Сообщение от lord2kim Посмотреть сообщение
<input type="text" id="inp" size="5" value="1">
<input type="button" value="+"
  onclick="
    inp.value = parseInt(inp.value) >= 5 ? '5' : (parseInt(inp.value) < 1 ? '1' : parseInt(inp.value) + 1)
">


осталось только сделать вторую кнопку и присобачить к ней соответствующее условие для уменьшения значения

(parseInt(inp.value) <= 1 ? '1'

при < 1 минусует не правильно. сперва уменьшается до нуля, потом единица

Последний раз редактировалось ghrd, 02.07.2012 в 15:26.
Ответить с цитированием
  #10 (permalink)  
Старый 02.07.2012, 15:25
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Сообщение от ghrd Посмотреть сообщение
<img src="-.jpg" class="onclick" onclick="inp.value = parseInt(inp.value) < 1 ? '1' : parseInt(inp.value) - 1"/>
<input tape="text" id="inp" value="1" class="input">
<img src="+.jpg" class="onclick" onclick="inp.value = parseInt(inp.value) >= 5 ? '5' : parseInt(inp.value) + 1"/>

минусует не правильно. сперва уменьшается до нуля, ниже единица
<img src="-.jpg" class="onclick" onclick="inp.value = parseInt(inp.value) <= 1 ? '1' : parseInt(inp.value) - 1"/>

или оформите в виде функции и передавайте туда в качестве параметров пороги (1,5 или др...)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет количества кликов мыши на объект в jquery Евгений_86 Events/DOM/Window 27 03.02.2019 03:46
Получение количества комментариев из сервиса cackle.ru iskiz Общие вопросы Javascript 6 13.03.2012 18:14
Увеличение количества товаров sniperweb Элементы интерфейса 4 23.05.2010 22:58
Определение количества плагинов Александр 2009 Общие вопросы Javascript 19 26.03.2009 00:41
Увеличение шрифта статьи. hello Элементы интерфейса 14 04.12.2008 14:32