Question

I have page with products catalogue and need to assign link to every products using it's name (innerHTML). The page looks like:

<!DOCTYPE html>
<html>
<head>
<script>
function searchlinks() {
var catbox=document.getElementById("category-box");
var boxcont=catbox.getElementsByTagName("a");
var h3href=catbox.getElementsByTagName("h3");

var www0="../search/" + h3href[0].innerHTML + "+" + boxcont[0].innerHTML;
var www1="../search/" + h3href[0].innerHTML + "+" + boxcont[1].innerHTML;
var www2="../search/" + h3href[0].innerHTML + "+" + boxcont[2].innerHTML;
var www3="../search/" + h3href[0].innerHTML + "+" + boxcont[3].innerHTML;

boxcont[0].href=www0;
boxcont[1].href=www1;
boxcont[2].href=www2;
boxcont[3].href=www3;

}
</script>
</head>
<body onload="searchlinks()">

<div id="category-box"><div class="category-block"><div class="category-blockimage"><img src="" alt="" ></div><div class="category-blockcontent">
     <h3>Clothing</h3>
<a href="">Men's</a>
<a href="">Women's</a>
<a href="">Boys'</a>
<a href="">Girls'</a>
</div></div></div>

<div id="category-box"><div class="category-block"><div class="category-blockimage"><img src="" alt="" ></div><div class="category-blockcontent">
     <h3>Protective Gear</h3>
<a href="">Chin Straps</a>
<a href="">Facemasks</a>
<a href="">Flak Jackets</a>
<a href="">Girdles</a>
<a href="">Hand Pads</a>
<a href="">Arm Pads</a>
<a href="">Helmets</a>
<a href="">Hip Pads</a>
</div></div></div>
</body>
</html>

But I have faced with a lot of problems. Here are my questions:
1) How to assign links dynamically? (without using var = www0 , www1 ...)
2) Function searchlinks() affects only on the first "category-block" div. How to use this function for all such divs on the page?

Here is my jsfiddle: http://jsfiddle.net/RGe8U/1/

Was it helpful?

Solution

Here is the fixed script and html. I have given different ids for two different divs, as ids should be unique then search them individually and call addLink function for both of them.

<html>
<head>
<script>
function addLink(catbox) {
        var boxcont=catbox.getElementsByTagName("a");
        var h3href=catbox.getElementsByTagName("h3");
        //alert(h3href[0].innerHTML);
        for (var i=0; i<boxcont.length; i++) {
                boxcont[i].href="../search/" + h3href[0].innerHTML + "+" + boxcont[i].innerHTML;
        }
}
function searchlinks() {
        addLink (document.getElementById("category-box"));
        addLink (document.getElementById("category-box2"));
}
</script>
</head>
<body onload="searchlinks()">

<div id="category-box"><div class="category-block"><div class="category-blockimage"><img src="" alt="" ></div><div class="category-blockcontent">
     <h3>Clothing</h3>
<a href="">Men's</a>
<a href="">Women's</a>
<a href="">Boys'</a>
<a href="">Girls'</a>
</div></div></div>

<div id="category-box2"><div class="category-block"><div class="category-blockimage"><img src="" alt="" ></div><div class="category-blockcontent">
     <h3>ProtectiveGear</h3>
<a href="">Chin Straps</a>
<a href="">Facemasks</a>
<a href="">Flak Jackets</a>
<a href="">Girdles</a>
<a href="">Hand Pads</a>
<a href="">Arm Pads</a>
<a href="">Helmets</a>
<a href="">Hip Pads</a>
</div></div></div>
</body>
</html>

Edit: If you do not want to change the div ids then use this script:

    <script>
function addLink(catbox) {
        var boxcont=catbox.getElementsByTagName("a");
        var h3href=catbox.getElementsByTagName("h3");
        alert(h3href[0].innerHTML);
        for (var i=0; i<boxcont.length; i++) {
                boxcont[i].href="../search/" + h3href[0].innerHTML + "+" + boxcont[i].innerHTML;
        }
}
function searchlinks() {
        var divs = document.getElementsByTagName("div");
        for (var i=0; i<divs.length; i++) {
                if (divs[i].id === "category-box")
                addLink (divs[i]);
        }
}
</script>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top