Подскажите с кодом
Всем доброго дня!
Есть код который плюсует/отнимает цифры в инпуте. 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/ Проблема в том что, все это работает только на первом импуте, а на остальных нет, как бы поправить? |
А не проще сгенерить эти элементы?
<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> |
нет, список генерируется php кодом из базы, там их много, поэтому надо чтобы существующие обрабатывались. а так не получается?
|
<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> |
Часовой пояс GMT +3, время: 04:59. |