将信息从一个div转移到另一个div的简单方法

时间:2017-09-30 21:38:13

标签: javascript css cart shopping

所以我在codepen上做这个项目。 Javascript做了它应该做的事情(点击之后,从按钮的父元素中获取一个product-name类的项目并将其放入cart-dropdown),但我是想知道是否有更简单的做同样事情的方式。而且我很难将product-price放到cart-dropdown,我的意思是我可以将价格放入,但是单独<li>。这是javascript。

var itemsCart = document.getElementById('cart-drop');

function myFunc(){
  itemsCart.classList.toggle('show');
}

window.onclick = function(event) {
  if(!event.target.matches('.dropdown span') && 
!event.target.matches('.dropdown-toggle')){

    var hide = document.getElementsByClassName('cart-dropdown');
        if(hide[0].classList.contains('show')){
            hide[0].classList.remove('show');    
        }

}
}

function addToCardButtons(){

var addToCart = document.getElementsByClassName('add-to-cart');

for(var i = 0; i<addToCart.length; i++) {
    addToCart[i].addEventListener('click', function(){
        var parentNode = this.parentNode;
        findName(parentNode);

        var num = document.getElementById('number');
        var parsed = parseInt(num.innerHTML);

        if(parsed>=0){
            parsed++;
            num.classList.add('addedToCart');
            num.innerHTML = parsed;
        }

    })    
}
}
addToCardButtons();

function findName(parent){

var children = parent.childNodes;

for(var i = 0; i<children.length; i++){
    var child = children[i].classList;
    if(child && child.contains('product-name')){
        var productName = children[i].innerHTML;
        createItem(productName);
    }

}
}

function createItem(name) {
  var li = document.createElement('li');
  li.appendChild(document.createTextNode(name))
  itemsCart.append(li)
}

完整版:https://codepen.io/benasl/pen/ZXJYgz

1 个答案:

答案 0 :(得分:1)

这是简化的代码。希望这可以帮助。我已通过传递product price参数将cart-dropdown添加到price

&#13;
&#13;
window.onload = function () {
	window.onclick = function (event) {
		if (!event.target.matches('.dropdown span') && !event.target.matches('.dropdown-toggle'))
			document.querySelector('.cart-dropdown').classList.remove('show');
	}

	function addToCardButtons() {
		var addToCart = document.querySelectorAll('.add-to-cart');

		for (var i = 0; i < addToCart.length; i++) {
			addToCart[i].addEventListener('click', function () {
				createItem(this.parentNode.querySelector(".product-name").innerHTML,
						   this.parentNode.querySelector(".product-price").innerHTML);

				var num = document.querySelector('#number');
				var parsed = parseInt(num.innerHTML);

				if (parsed >= 0) {
					num.classList.add('addedToCart');
					num.innerHTML = ++parsed;
				}
			})
		}
	}

	addToCardButtons();

	function createItem(name, price) {
		var li = document.createElement('li');
		li.appendChild(document.createTextNode(name + " - " + price))
		document.querySelector('#cart-drop').append(li);
		//Remove "Your cart is empty" when any product is added
		[].filter.call(document.querySelectorAll('#cart-drop > li'),function(x) {
			if (x.textContent.indexOf('Your cart is empty') > -1) x.remove();
		});
	}
}
&#13;
#main {
	margin-top: 20px;
	margin-bottom: 20px;
}

#main .row {
	margin-top: 20px;
	margin-bottom: 20px;
}

.text {
	position: absolute;
	top: 50%;
	transform: translate(0%, -50%);
	text-align: right;
	text-transform: uppercase;
	color: #fff;
	width: 60%;
}

.text h1 {
	font-size: 4em;
	color: #d88c00;
}

.product-wrap {
	margin-top: 30px;
}

.product-name {
	margin-top: 0;
	color: #ffa500;
}

.product-type {
	margin: 0;
	color: #bbbbbb;
}

.product-price {
	font-weight: 600;
	font-size: 1.5em;
	color: #424242;
}

.price-old {
	color: #bbbbbb;
	text-decoration: line-through;
	font-size: 1em;
	line-height: 20px;
}

.product-description {
	margin-bottom: 20px;
	margin-top: 20px;
}

.test {
	width: 100%;
	min-height: 350px;
}

.test img {
	width: 100%;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />

<nav class="navbar navbar-default navbar-fixed-top custom-nav no-border">
	<div class="container">
		<div class="navbar-header">
			<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false"
				aria-controls="navbar">
			<span class="sr-only">Toggle navigation</span>
			<span class="icon-bar"></span>
			<span class="icon-bar"></span>
			<span class="icon-bar"></span>
		  </button>
			<a class="navbar-brand no-padding" href="#">
			<img class="logo" src="imgs/logo.svg">  
		  </a>
		</div>

		<div id="navbar" class="collapse navbar-collapse">
			<ul class="nav navbar-nav navbar-right">
				<li class="dropdown" id="dropdown" onclick="document.getElementById('cart-drop').classList.toggle('show');">
					<a class="dropdown-toggle custom-toggle no-padding" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
					<span class="cart"><i class="fa fa-shopping-cart" aria-hidden="true"></i></span>
					<span>Your cart:</span>
					<span id="number"> 0</span> 
				</a>
					<ul id="cart-drop" class="dropdown-menu cart-dropdown">
						<li>Your cart is empty</li>
					</ul>
				</li>
			</ul>
		</div>
	</div>
</nav>

<div id="main">
	<div class="container">
		<div class="row">
			<div class="col-md-5">
				<div class="test">
					<img src="https://images.unsplash.com/photo-1484795819573-86ae049cb815?dpr=1&auto=compress,format&fit=crop&w=1500&h=&q=80&cs=tinysrgb&crop=">
				</div>
			</div>

			<div class="col-md-7">
				<div class="product-wrap">
					<h4 class="product-type">Mountain Bikes</h4>
					<h1 class="product-name">Lorem ipsum</h1>
					<span class="product-price price-new">1200.00 eu </span><span class="price-old">1680.00 eu</span>
					<p class="product-description">Curabitur maximus quam sit amet mattis vulputate. Donec id tristique nisl, ut vehicula urna. Vivamus
						vel magna ipsum. Vestibulum et finibus nisl. </p>
					<button class="btn btn-lg add-to-cart">Add to cart</button>
				</div>
			</div>
		</div>

		<div class="row">
			<div class="col-md-7">
				<div class="product-wrap">
					<h4 class="product-type">Road Bikes</h4>
					<h1 class="product-name">Lorem ipsum #2</h1>
					<span class="product-price price-new">2000.00 eu</span>
					<p class="product-description">Curabitur maximus quam sit amet mattis vulputate. Donec id tristique nisl, ut vehicula urna. Vivamus
						vel magna ipsum. Vestibulum et finibus nisl. </p>
					<button class="btn btn-lg add-to-cart">Add to cart</button>
				</div>
			</div>

			<div class="col-md-5">
				<div class="test">
					<img src="https://images.unsplash.com/photo-1484795819573-86ae049cb815?dpr=1&auto=compress,format&fit=crop&w=1500&h=&q=80&cs=tinysrgb&crop=">
				</div>
			</div>

		</div>
	</div>
</div>
&#13;
&#13;
&#13;