2017-04-19 20 views
0

.infoは.showBorderと同じように動作する必要があります。つまり、境界とともに移動しますが、ボックスの上に配置されます。 jQueryを使用してこれを構造化するより良い方法も歓迎されています。jsコードにテキストを含む余分なクラス(.info)を追加するには

// Get references to the two sets of boxes 
 
var numbers = document.querySelectorAll(".click"); 
 
var letters = document.querySelectorAll(".border"); 
 

 
// Turn each node list into proper arrays: 
 
numbers = Array.prototype.slice.call(numbers); 
 
letters = Array.prototype.slice.call(letters); 
 

 
// Loop through all the number boxes 
 
numbers.forEach(function(box, index){ 
 

 
    // Set up the click event handlers for all the number boxes 
 
    box.addEventListener("click", function(){ 
 
    
 
    // Remove borders from each of the letter boxes 
 
    letters.forEach(function(box){ 
 
     box.classList.remove("showBorder"); 
 
     
 
    }); 
 
     
 
    // Apply the border to only the one clicked element 
 
    letters[index].classList.add("showBorder"); 
 
    }); 
 
    
 
});
.list-box li {display: inline;list-style-type: none;padding: 1em;background:red;} 
 
.list-box {margin:50px auto;} 
 
.box-sleeve li {display: inline;list-style-type: none;padding: 1em;background:red;} 
 
.box-sleeve {margin:50px auto;} 
 
.showBorder { border: 3px dashed black; } 
 
.info {margin:0;padding:1em;}
<section> 
 
     <div class="container"> 
 
        <ul class="list-box"> 
 
         <li class="click">1</li> 
 
         <li class="click">2</li> 
 
         <li class="click">3</li> 
 
         <li class="click">4</li> 
 
        </ul> 
 
       <span class="info">paragraph</span> 
 
        <ul class="box-sleeve"> 
 
         <li class="border">a</li> 
 
         <li class="border">b</li> 
 
         <li class="border">c</li> 
 
         <li class="border">d</li> 
 
        </ul> 
 
       </div> 
 
      
 
    </section>

+0

'あなたは見えるようになっているものを手動で私たちをご提示くださいできますか? – Oen44

+0

@ Oen44テキスト '段落'は、国境と同じに沿って移動する必要があります。 – Olivbelle

答えて

0

は、あなたが提供されたコードに基づいて、これを行うには良い方法を考えることができませんでした。私はあなたがアイデアを得て、それをあなたのプロジェクトに実装できることを願っています。

編集

チェックボックスをオンにした後に段落が表示されます。 box`上記

// Get references to the two sets of boxes 
 
var numbers = document.querySelectorAll(".click"); 
 
var letters = document.querySelectorAll(".border"); 
 

 
// Turn each node list into proper arrays: 
 
numbers = Array.prototype.slice.call(numbers); 
 
letters = Array.prototype.slice.call(letters); 
 

 
// Loop through all the number boxes 
 
numbers.forEach(function(box, index){ 
 

 
    // Set up the click event handlers for all the number boxes 
 
    box.addEventListener("click", function(){ 
 
    
 
    // Remove borders from each of the letter boxes 
 
    letters.forEach(function(box){ 
 
     box.classList.remove("showBorder"); 
 
    }); 
 
     
 
    // Apply the border to only the one clicked element 
 
    var info = document.getElementsByClassName('info')[0]; 
 
    info.style.left = 10+(index*45) + 'px'; 
 
    info.style.display = 'inline'; 
 
    letters[index].classList.add("showBorder"); 
 
    }); 
 
    
 
});
.list-box li {display: inline;list-style-type: none;padding: 1em;background:red;} 
 
.list-box {margin:50px auto;} 
 
.box-sleeve li {display: inline;list-style-type: none;padding: 1em;background:red;} 
 
.box-sleeve {margin:50px auto;} 
 
.showBorder { border: 3px dashed black; } 
 
.info {margin:0;padding:1em; position: relative; display: none;}
<section> 
 
     <div class="container"> 
 
        <ul class="list-box"> 
 
         <li class="click">1</li> 
 
         <li class="click">2</li> 
 
         <li class="click">3</li> 
 
         <li class="click">4</li> 
 
        </ul> 
 
       <span class="info">paragraph</span> 
 
        <ul class="box-sleeve"> 
 
         <li class="border">a</li> 
 
         <li class="border">b</li> 
 
         <li class="border">c</li> 
 
         <li class="border">d</li> 
 
        </ul> 
 
       </div> 
 
      
 
    </section>

+0

私が必要とするものにほぼ完璧ですが、.showBorderがアクティブになったときにテキストのみを表示できますか? – Olivbelle

+0

これをチェックして、編集しました。 – Oen44

+0

完璧、これはちょうど! – Olivbelle

関連する問題