【问题标题】:Store the value in java or in javascript so that it can be passed to another JSP将值存储在 java 或 javascript 中,以便可以将其传递给另一个 JSP
【发布时间】:2019-06-05 15:13:01
【问题描述】:

我在这段代码的第 11 行得到了总价的价值 但是我怎样才能将它存储在 java 或 javascript 变量中,以便我可以以下面的形式将此值传递给 billing.jsp。

--------------------------HTML-------- ------------------------------------

  <div class="card-block">
<h4 class="card-title">Orange</h4>
<p class="card-text">Price: $5</p>
<a href="#" data-name="Orange" data-price="5">Add to cart</a> // Price of 
Orange gets added to Cart
</div>

<div class="card-block">
<h4 class="card-title">Banana</h4>
<p class="card-text">Price: $5</p>
<a href="#" data-name="Banana" data-price="5">Add to cart</a> // Price of 
Banana gets added to Cart 
</div>          

 Total price: $<span class="total-cart"></span>  // Here I am getting 
 total price of orange and banana lets say $10, how can I store this 
dynamically generated value to a javascript variable or in any other 
suitable java variable so that I can pass the value as input type hidden 
 in the below form??


   <div class="footer">
      <form name="billing" action="billing.jsp">           
    <input type="hidden" name="price" value=""/> // How can I pass this 
 total price $10 here to billing.jsp here 
    <input type="submit"/>
   </form>        
  </div>

----------JAVASCRIPT----------

var shoppingCart = (function() {
 // =============================
 // Private methods and propeties
 // =============================
 cart = [];

// Constructor
 function Item(name, price, count) {
 this.name = name;
 this.price = price;
 this.count = count;
 }

  // Save cart
  function saveCart() {
  sessionStorage.setItem('shoppingCart', JSON.stringify(cart));
  }

  // Load cart
  function loadCart() {
   cart = JSON.parse(sessionStorage.getItem('shoppingCart'));
  }
   if (sessionStorage.getItem("shoppingCart") != null) {
    loadCart();
   }



  // Public methods and properties

  var obj = {};

  // Add to cart

  obj.addItemToCart = function(name, price, count) {
  for(var item in cart) {
  if(cart[item].name === name) {
    cart[item].count ++;
    saveCart();
    return;
  }
  }
  var item = new Item(name, price, count);
  cart.push(item);
  saveCart();
  }
  // Set count from item
  obj.setCountForItem = function(name, count) {
  for(var i in cart) {
  if (cart[i].name === name) {
    cart[i].count = count;
    break;
  }
 }
 };
 // Remove item from cart
  obj.removeItemFromCart = function(name) {
  for(var item in cart) {
    if(cart[item].name === name) {
      cart[item].count --;
      if(cart[item].count === 0) {
        cart.splice(item, 1);
      }
      break;
    }
  }
  saveCart();
  }

  // Remove all items from cart
  obj.removeItemFromCartAll = function(name) {
  for(var item in cart) {
  if(cart[item].name === name) {
    cart.splice(item, 1);
    break;
  }
 }
 saveCart();
 }

 // Clear cart
 obj.clearCart = function() {
 cart = [];
 saveCart();
 }

 // Count cart 
 obj.totalCount = function() {
  var totalCount = 0;
  for(var item in cart) {
  totalCount += cart[item].count;
  }
 return totalCount;
 }

  // Total cart
  obj.totalCart = function() {
  var totalCart = 0;
  for(var item in cart) {
  totalCart += cart[item].price * cart[item].count;
  }
  return Number(totalCart.toFixed(2));
  }

 // List cart
 obj.listCart = function() {
 var cartCopy = [];
 for(i in cart) {
  item = cart[i];
  itemCopy = {};
  for(p in item) {
    itemCopy[p] = item[p];

  }
  itemCopy.total = Number(item.price * item.count).toFixed(2);
  cartCopy.push(itemCopy)
 }
 return cartCopy;
 }

// cart : Array
// Item : Object/Class
// addItemToCart : Function
// removeItemFromCart : Function
// removeItemFromCartAll : Function
// clearCart : Function
// countCart : Function
// totalCart : Function
// listCart : Function
// saveCart : Function
// loadCart : Function
return obj;
})();


// *****************************************
// Triggers / Events
// ***************************************** 
// Add item
 $('.add-to-cart').click(function(event) {
  event.preventDefault();
  var name = $(this).data('name');
  var price = Number($(this).data('price'));
  shoppingCart.addItemToCart(name, price, 1);
  displayCart();
 });

 // Clear items
 $('.clear-cart').click(function() {
 shoppingCart.clearCart();
  displayCart();
  });


  function displayCart() {
  var cartArray = shoppingCart.listCart();
  var output = "";
  for(var i in cartArray) {
  output += "<tr>"
  + "<td>" + cartArray[i].name + "</td>" 
  + "<td>(" + cartArray[i].price + ")</td>"
  + "<td><div class='input-group'><button class='minus-item input-group- 
  addon btn btn-primary' data-name=" + cartArray[i].name + ">-</button>"
  + "<input type='number' class='item-count form-control' data-name='" + 
   cartArray[i].name + "' value='" + cartArray[i].count + "'>"
  + "<button class='plus-item btn btn-primary input-group-addon' data- 
  name=" 
  + cartArray[i].name + ">+</button></div></td>"
  + "<td><button class='delete-item btn btn-danger' data-name=" + 
  cartArray[i].name + ">X</button></td>"
  + " = " 
  + "<td>" + cartArray[i].total + "</td>" 
  +  "</tr>";
  }
  $('.show-cart').html(output);
  $('.total-cart').html(shoppingCart.totalCart());
  $('.total-count').html(shoppingCart.totalCount());
  }

 // Delete item button

  $('.show-cart').on("click", ".delete-item", function(event) {
  var name = $(this).data('name')
  shoppingCart.removeItemFromCartAll(name);  
   displayCart();
  })


 // -1
 $('.show-cart').on("click", ".minus-item", function(event) {
  var name = $(this).data('name')
  shoppingCart.removeItemFromCart(name);
  displayCart();
 })
  // +1
  $('.show-cart').on("click", ".plus-item", function(event) {
   var name = $(this).data('name')
  shoppingCart.addItemToCart(name);
  displayCart();
  })

  // Item count input
  $('.show-cart').on("change", ".item-count", function(event) {
   var name = $(this).data('name');
  var count = Number($(this).val());
  shoppingCart.setCountForItem(name, count);
  displayCart();
 });

 displayCart();

【问题讨论】:

  • Java 是服务器端,而 JavaScript 是客户端。您可以尝试将变量存储在 JSP 中并通过 &lt;% //your code %&gt; 在 JavaScript 中提取它
  • 你能在div 中指定total 值的地方显示你的javascript 代码吗?
  • 添加请看
  • 在 TRIGGER EVENTS 下方,添加项目在那里

标签: javascript java jsp


【解决方案1】:

您在下面的函数中调用totalCart()

function displayCart() {
  ..
  $('.show-cart').html(output);
 <!--here you got that total price-->
  $('.total-cart').html(shoppingCart.totalCart());
  $('.total-count').html(shoppingCart.totalCount());
  }

从下面function你得到total price,只需添加document.getElementById('idofinput').value = something,所以每当调用这个函数时,总值将在input中更新,也不要忘记给@987654329 @给你的input.i.e:

 // Total cart
      obj.totalCart = function() {
      var totalCart = 0;
      for(var item in cart) {
      totalCart += cart[item].price * cart[item].count;
      }
  //setting value for input field.
    document.getElementById('idofinput').value= Number(totalCart.toFixed(2));
      return Number(totalCart.toFixed(2));
      }

【讨论】:

  • 感谢您的努力,但我仍然没有在 billing.jsp 中获得 10 美元的总价格值,实际上在 billing.jsp 中没有得到任何价值,我正在像 String s=request.getParameter("idofinput "); out.println(s);
  • 您是否将id 放入您的输入,即:&lt;input type="hidden" name="price" id="idofinput" value=""/&gt;,并且您还需要使用inputname 来获取此值,即:request.getParameter("price");
  • 是的,我输入了,但 billing.jsp 中没有显示任何内容,url 类似于 localhost:8080/myproject/billing.jsp?price=
  • 我已经检查了该代码并且它在我这边工作..你能显示你在当前代码中更新的所有内容吗?
  • 我已经提到了这里所有的代码请看stackoverflow.com/questions/56456921/…
【解决方案2】:

当 html 来自 jsp 时,使用 scriplet 标签

当 html 被 js 驱动并且 js 从 api 获取值时 尝试将 id="yourId" 属性添加到具有 total-cart 类的 span 元素 然后做 document.getElementById('yourId').textContent = value

【讨论】:

    【解决方案3】:

    您可以使用 jQuery 获取总价。
    例如

    Total price: $<span class="total-cart">200</span>
    

    然后

    $('span.total-cart').text();// Output is 200
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 2013-06-10
      • 1970-01-01
      相关资源
      最近更新 更多