2

I'm doing a JavaScript function which is to hover anyone of the <a> elements and change the <img> src and <p> accordingly.

I am practicing and learning JavaScript. So I have create a super simple JavaScript function code.

function onHover() {

    var pistiProducts = [
        "https://temp1.asign.pro/wp-content/uploads/2019/05/test-1.jpg",
        "https://temp1.asign.pro/wp-content/uploads/2019/05/test-2.jpg"
    ];

    var replace = document.getElementById("replacement");
    var itemdec = document.getElementById("text-replacement");

    replace.src = pistiProducts[1];
    itemdec.innerHTML = "Test 1";

}

In my HTML:

<div class="dropdown-menu-wrapper d-flex">                                               
  <div class="dropdown-item-wrapper flex-grow-1">                                                
    <a id="pisti-products" onmouseover="onHover();" class="pisti-products" href="#">Action</a>                                                   
    <a class="" href="#">Another action</a>                                                      
    <a class="" href="#">Something else here</a>                                                         
    <a class="" href="#">Something else here</a>                                                         
    <a class="" href="#">Something else here</a>                                                         
    <a class="" href="#">Something else here</a>                                                         
    <a class="" href="#">Something else here</a>                                                     
    <a class="" href="#">Something else here</a>                                                         
    <a class="" href="#">Something else here</a>                                                     
    <a class="" href="#">Something else here</a>                                                     
    <a class="" href="#">Something else here</a>                                                     
    <a class="" href="#">Something else here</a>                                                     
    <a class="" href="#">Something else here</a>                                                 
  </div>

  <div class="dropdown-display-wrapper">                                                     
    <div class="display-img replacement">                                                            
     <img id="replacement" class="w-100 img-fluid" src="https://temp1.asign.pro/wp-content/uploads/2019/05/test-1.jpg" alt="">                                                       
    </div>                                                       
    <p class="mb-0 w-100 pisti-title" id="text-replacement">Another action</p>                                                   
  </div>                                                 
</div>

Currently what I will do is I will write 13 function and set the onmouseover="" to the relevant one. But I don't think this is a best solution because I have more to do something like this.

As you can see my JavaScript code included Array. But I have no idea what can be done with array. :(

I need help to suggest me the best and easy solution. Please suggest me in JavaScript code instead of jQuery. I'm not good with basic JavaScript syntax and structure.

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Anderson Koh
  • 485
  • 1
  • 6
  • 19

1 Answers1

1

add parameter n to your function onHover(n)

function onHover(n) {

    var pistiProducts = [
        "https://temp1.asign.pro/wp-content/uploads/2019/05/test-1.jpg",
        "https://temp1.asign.pro/wp-content/uploads/2019/05/test-2.jpg"
    ];

    var replace = document.getElementById("replacement");
    var itemdec = document.getElementById("text-replacement");

    replace.src = pistiProducts[n%2];
    itemdec.innerHTML = `Test ${n}`;

}
img { height: 100px;}
<div class="dropdown-menu-wrapper d-flex">                                               
  <div class="dropdown-item-wrapper flex-grow-1">                                                
    <a id="pisti-products" onmouseover="onHover(0)" class="pisti-products" href="#">Action</a>                                                   
    <a class="" onmouseover="onHover(1)" href="#">Another action</a>                                                                                                       
    <a class="" onmouseover="onHover(2)" href="#">Something else here</a>                                                         
    <a class="" onmouseover="onHover(3)" href="#">Something else here</a>                                                         
    <a class="" onmouseover="onHover(4)" href="#">Something else here</a>                                                         
    <a class="" onmouseover="onHover(5)" href="#">Something else here</a>                                                     
    <a class="" onmouseover="onHover(6)" href="#">Something else here</a>                                                         
    <a class="" onmouseover="onHover(7)" href="#">Something else here</a>                                                     
    <a class="" onmouseover="onHover(8)" href="#">Something else here</a>                                                     
    <a class="" onmouseover="onHover(9)" href="#">Something else here</a>                                                     
    <a class="" onmouseover="onHover(10)" href="#">Something else here</a>                                                     
    <a class="" onmouseover="onHover(11)" href="#">Something else here</a>          
    
    <a class="" onmouseover="onHover(12)" href="#">Something else here</a> 
  </div>

  <div class="dropdown-display-wrapper">                                                     
    <div class="display-img replacement">                                                            
     <img id="replacement" class="w-100 img-fluid" src="https://temp1.asign.pro/wp-content/uploads/2019/05/test-1.jpg" alt="">                                                       
    </div>                                                       
    <p class="mb-0 w-100 pisti-title" id="text-replacement">Another action</p>                                                   
  </div>                                                 
</div>
Kamil Kiełczewski
  • 85,173
  • 29
  • 368
  • 345