Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.04.2015, 15:09
Новичок на форуме
Отправить личное сообщение для Karen8 Посмотреть профиль Найти все сообщения от Karen8
 
Регистрация: 05.03.2015
Сообщений: 5

Подскажите с кодом
Всем доброго дня!
Есть код который плюсует/отнимает цифры в инпуте.
var wrapper = document.querySelector('wr');
var countInput = document.getElementById('count');
var butM = document.getElementById('bminus');
var butP = document.getElementById('bplus');
var units = countInput.value.replace(/\d/g, '');
butP.onclick = function(){
    countInput.value = parseInt(countInput.value)+1+units;
};
butM.onclick = function(){
    if(parseInt(countInput.value) > 1) {
        countInput.value = parseInt(countInput.value)-1+units;
    }
};

Вот html
<div class="wr">
    <div>
        <span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
        <span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
        <span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
        <span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
    </div>
</div>


демо http://jsfiddle.net/ump6oL6y/13/

Проблема в том что, все это работает только на первом импуте, а на остальных нет, как бы поправить?

Последний раз редактировалось Karen8, 11.04.2015 в 15:28. Причина: добавил ссылку
Ответить с цитированием
  #2 (permalink)  
Старый 11.04.2015, 20:04
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от theKingOfJava
 
Регистрация: 31.03.2015
Сообщений: 113

А не проще сгенерить эти элементы?
<html>
<head>
<meta charset="windows-1251" />

<style>
#wr {
    margin: 50px;
    position: relative;
    border: 2px solid #06c106;
    padding: 5px 10px;
    width: 130px;
    overflow: hidden;
    
}
#wr input {
    display: block;
    padding: 8px;
    width: 50px;
    text-align: center;
    border: 2px solid #c00;
    outline: none;
    float: left;
}
.minus,
.plus {
    float: left;
    display: block;
    font-size: 26px;
    padding: 5px 8px;
    font-weight: bolder;
    cursor: pointer;
    color: #d00;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}
</style>

</head>
<body>


<div id="wr"></div>


<script>

create=function(){
 var minus=document.createElement("span")
  minus.className="minus"
  minus.innerHTML="-"
  minus.onclick=function(){var iv=input.value; input.value=parseInt(iv)==0? iv : iv.replace(/\d+/, function(n){return +n-1})}
  wr.appendChild(minus)
 var input=document.createElement("input")
  input.value="1 шт"
  wr.appendChild(input)
 var plus=document.createElement("span")
  plus.innerHTML="+" 
  plus.className="plus"
  plus.onclick=function(){input.value=input.value.replace(/\d+/, function(n){return +n+1})}
  wr.appendChild(plus)
}

create()
create()
create()
create()



</script>

</body>
</html>

Последний раз редактировалось theKingOfJava, 11.04.2015 в 20:09.
Ответить с цитированием
  #3 (permalink)  
Старый 11.04.2015, 20:20
Новичок на форуме
Отправить личное сообщение для Karen8 Посмотреть профиль Найти все сообщения от Karen8
 
Регистрация: 05.03.2015
Сообщений: 5

нет, список генерируется php кодом из базы, там их много, поэтому надо чтобы существующие обрабатывались. а так не получается?
Ответить с цитированием
  #4 (permalink)  
Старый 11.04.2015, 21:01
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от theKingOfJava
 
Регистрация: 31.03.2015
Сообщений: 113

<html>
<head>
<meta charset="windows-1251" />
<style>

.wr {
    margin: 50px;
    position: relative;
    border: 2px solid #06c106;
    padding: 5px 10px;
    width: 130px;
    overflow: hidden;
    
}
.wr input {
    display: block;
    padding: 8px;
    width: 50px;
    text-align: center;
    border: 2px solid #c00;
    outline: none;
    float: left;
}
#bminus,
#bplus {
    float: left;
    display: block;
    font-size: 26px;
    padding: 5px 8px;
    font-weight: bolder;
    cursor: pointer;
    color: #d00;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

</style>
</head>
<body>


<div class="wr">
    <div>
        <span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
        <span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
        <span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
        <span id="bminus">–</span><input type="text" id="count" value="1 шт" /><span id="bplus">+</span>
    </div>
</div>

<script>

get=function(s){return document.querySelector(".wr").querySelectorAll(s)}
minuses=get("#bminus")
pluses=get("#bplus")
inputs=get("#count")

setMinus=function(el){return function(){
 var iv=el.value; el.value=parseInt(iv)==0? iv : iv.replace(/\d+/, function(n){return +n-1})
}}
setPlus=function(el){return function(){
 el.value=el.value.replace(/\d+/, function(n){return +n+1})
}}


for(var i=0; i<minuses.length; i++){
 minuses[i].onclick=setMinus(inputs[i])
 pluses[i].onclick=setPlus(inputs[i])
}

</script>


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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите решение с кодом Karen8 Элементы интерфейса 9 05.03.2015 19:20
Подскажите пожалуйста с кодом saylar_06 Общие вопросы Javascript 6 22.03.2014 16:04
Подскажите по ООП Petja Общие вопросы Javascript 5 18.05.2013 18:17
Подскажите как поступить. merzavchick jQuery 9 24.08.2012 23:57
Подскажите плизз с выбором селектора для select option frolvict jQuery 2 13.11.2010 15:29