2017-09-30 5 views
0

私はこのプロジェクトをcodepenでやっています。 Javascriptは、ボタンの親要素からproduct-nameのクラスを持つアイテムをクリックしてcart-dropdownに入れたものです(クリックした後、同じことを行うより簡単な方法があるかどうかは分かりません)。そして、私は苦労してproduct-pricecart-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

は単純化されたコードです。お役に立てれば。私はpriceパラメータを渡すことによってproduct pricecart-dropdownに追加しました。

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

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

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

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

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

 
\t addToCardButtons(); 
 

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

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

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

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

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

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

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

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

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

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

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

 
.test img { 
 
\t 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"> 
 
\t <div class="container"> 
 
\t \t <div class="navbar-header"> 
 
\t \t \t <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" 
 
\t \t \t \t aria-controls="navbar"> 
 
\t \t \t <span class="sr-only">Toggle navigation</span> 
 
\t \t \t <span class="icon-bar"></span> 
 
\t \t \t <span class="icon-bar"></span> 
 
\t \t \t <span class="icon-bar"></span> 
 
\t \t </button> 
 
\t \t \t <a class="navbar-brand no-padding" href="#"> 
 
\t \t \t <img class="logo" src="imgs/logo.svg"> 
 
\t \t </a> 
 
\t \t </div> 
 

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

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

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

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

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

 
\t \t </div> 
 
\t </div> 
 
</div>

関連する問題