【问题标题】:Simpler way of transfering info from one div to another将信息从一个 div 传输到另一个的更简单方法
【发布时间】:2018-03-12 10:43:49
【问题描述】:

所以我在 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

【问题讨论】:

    标签: javascript css cart shopping


    【解决方案1】:

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

    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();
    		});
    	}
    }
    #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%;
    }
    <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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 2019-11-19
      相关资源
      最近更新 更多