【问题标题】:Javascript - cart only adds 1 item one even if 2 or 5 the item are buyedJavascript - 即使购买了 2 或 5 件商品,购物车也只会添加 1 件商品
【发布时间】:2012-11-16 10:04:04
【问题描述】:

我的脚本只有 HTML 和 Javascript,我找不到问题所在。我有一个 html 页面,其中包含 8 种具有相同 html 样式的产品。但是当我点击产品 2 或 8 时,它总是只列出列表中的第一个产品。而且我不知道我需要做什么才能让它工作。 (脚本中的一些文本是我的母语瑞典语)

HTML 代码

 <div id="Tama">
  <h2>TAMA</h2>
  <img src="images/trummor/tama.jpg">
  <br/>
  <p>TAMA Superstar. </p>
  <p>Pris: 25000 kr</p>
  <hr style="border: 1px solid #000;">
  <form name="order">
   <input type="hidden" id="IDnumber" value="004">
   <input type="hidden" id="pris" value="25000">
   <input type="hidden" id="item" value="Tama Superstar">
   Välj antal: 
   <input type="text" id="antal" value="1" name="antal"  onChange="this.value=CKquantity(this.value)" style="width:30px;" maxlength="1"> | 
   <input type="button" value="Köp" onclick="addElement(this.form);">
  </form>
  <hr style="border: 1px solid #000;">
  <p>
   <a href="#drums" onclick="drums()">Tillbaka till produkter</a>
  </p>
 </div>

Javascript 购物车文件

// -- CHECK IF ANTAL IS A NUMBER -- //
function CKquantity(checkString) {
  var strNewQuantity = "";

  for ( i = 0; i < checkString.length; i++ ) {
  ch = checkString.substring(i, i+1);
  if ( (ch >= "0" && ch <= "9") || (ch == '.') )
     strNewQuantity += ch;
  }

  if ( strNewQuantity.length < 1 )
  strNewQuantity = "1";

  return(strNewQuantity);
 }

 // -- ADD TO CART -- //
 // still problem - only enter the first item on the list either you click on the
  second or last product

function addElement(thisForm)
 { 
var itemId = document.getElementById('IDnumber').value
var itemName = document.getElementById('item').innerHTML;

var antal = document.getElementById('antal').value;
var pris = document.getElementById('pris').value;

var parent = document.getElementById('cart'); 
var newElement = document.createElement('li'); 
newElement.setAttribute('class','item');

var sum = antal * pris;

newElement.innerHTML = "("+itemId+") "+ antal + " x " + itemName + " - " + pris + " kr, Totalt: " + sum + " kr";
parent.appendChild(newElement);
}

【问题讨论】:

  • 你听说过一些关于 JS 区分大小写的事情吗?
  • HTML ID 必须是唯一的......你应该给每个项目一个不同的 ID(例如 item_111 和项目 ID 左右,而不是只有 item
  • 是的,但不知道我必须拥有这一切。

标签: javascript shopping-cart cart


【解决方案1】:

JavaScript 是区分大小写的脚本语言,这意味着它的关键字应该写在right-case 中。你应该写function 而不是FUNCTION

试试这个:

function addElement()
{ 
var itemName = document.getElementById('item').innerHTML;
var antal = document.getElementById('antal').value; // 'value' not 'VALUE'

var parent = document.getElementById('cart'); 
var newElement = document.createElement('li'); 
newElement.setAttribute('class','item'); 
newElement.innerHTML = antal + " x " + itemName; 
parent.appendChild(newElement);
}

【讨论】:

  • 您的document.getElementById('antal').VALUE 将是未定义的,因为正如您已经写的那样 - Js 区分大小写。
  • 谢谢!它可以工作,但是我如何让它输入单个对象而不是购物车中的同一对象。现在它列出了第一个产品,即使我在最后一个产品上单击购买 (köp)。或者我应该说照顾 id "item" 然后像使用 id 和 item_111、item_222 等等。
  • 对不起,但我不确定你想问什么,如果需要的话,你可以用一些例子来解释一下(你可以在你的问题中添加这个)。如果您询问如何遍历页面中的不同对象,则可以通过使用 document.getElementById('IDHere'); 指定它们各自的 unique-IDs 来做到这一点
  • Sajjad:我已经编辑了 Q 并且在顶部你可以看到新的东西。
  • 由于您的真正问题已得到解答,并且您的新问题具有全新的性质,因此我建议您发送电子邮件至 mark this answer as Answer 并在堆栈溢出问题上发布新问题,以便您的下一个查询也有助于社区,否则标题/问题/答案将完全被误导。谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-07-10
  • 2015-07-26
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多