2017-10-18 53 views
2

我想加上或减去1,一个简单的量的输入框,可以像下面的图片不同:使用JavaScript的onclick在一段PHP循环

enter image description here

PHP:

$query = ... 
while ($row= mysqli_fetch_array($query)) 
{ 
    <input type="hidden" value="<?php echo $row['id']; ?>" id="id_part"> 
    <input type="text" value="<?php echo $row['quantity']; ?>" id="<?php echo $row['id']; ?>_count"><br> 
    <input type="button" value="-" id="minus" onclick="minus()"> 
    <input type="button" value="+" id="plus" onclick="plus()"> 
} 

的Javascript:

<script> 
    var count = 1; 
    var id = document.getElementById("id_part").value; 
    var countEl = document.getElementById(id + "_count"); 
    function plus(){ 
     count++; 
     countEl.value = count; 
    } 
    function minus(){ 
     if (count > 1) { 
     count--; 
     countEl.value = count; 
     } 
    } 
</script> 

它不起作用。它只需要我第一个ID数量框。无法管理编辑第二个数量框,其中id应该不同。正如你所看到的,我为每个id标签分配了不同的名字,取自数据库id。

+5

您正在重新使用'id'值,这在HTML中无效。使用唯一的'id'值。 – David

+1

为什么不使用输入类型编号进行此行为? [(doc,滚动到输入类型编号 )](https://www.w3schools.com/html/html_form_input_types.asp)[(example)](https://www.w3schools.com/html/tryit.asp ?filename = tryhtml_input_number) –

+0

我不喜欢那个输入的方面。 –

回答

4

Working fiddle

发生这种情况是因为您的id属性应该是唯一的,因此您的ID有重复。

请改用普通类。

0

正在为脚本中的每一行生成ID id_part。 当您点击按钮时,它会查找id_part的实例及其第一个值并编辑其值。

使用唯一的ID说id='id_part' +<?php echo $row['id']; ?>

0

其实你的隐藏字段,ID应该是唯一的,但它是在循环并返回所有行相同的值。

<input type="hidden" value="<?php echo $q; ?>" id="**id_part**"> 

Try blow changes, 
change your inner html as below 
<input type="button" value="-" id="minus" onclick="minus(<?php echo $row['id']; ?>)"> 
<input type="button" value="+" id="plus" onclick="plus(<?php echo $row['id']; ?>)"> 


<script> 
    var count = 1; 
    function plus(position){ 
     count++; 
     var countEl = document.getElementById(position + "_count"); 
     countEl.value = count; 
    } 
    function minus(position){ 
     if (count > 1) { 
     count--; 
     var countEl = document.getElementById(position + "_count"); 
     countEl.value = count; 
     } 
    } 
</script> 
+0

除了一个细节之外,我用它来解决这个问题。如果我在第一个数量框中加上1,然后在第二个数量框中加上1,则第二个框中的新值将是第一个框+1中的第一个值,而不是第二个框中的第一个值。 –

+0

试着用静态的id和值的小提琴,你会明白我在说什么。 –