I have a simple SVG file that I need to load and iterate through shapes nodes to add an onclick event. The problem is that it is not finding the shape nodes in my SVG file after it loads. What am I doing wrong?
This is my SVG:
<?xml version="1.0" encoding="windows-1252"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="336.652px" height="379.156px" viewBox="0 0 336.652 379.156" enable-background="new 0 0 336.652 379.156"
xml:space="preserve">
<shapes id="shapes">
<shape id="shape1">
<path fill="#999999" d="M190.96,240.98c0,0.011-0.01,0.011-0.01,0.011c-3.16,2.14-8.869,3.069-12.561,2.069l-11.48-1.681
c-0.03-0.01-0.09-0.021-0.12-0.03c-0.03-0.01-0.05-0.029-0.07-0.05c-0.02,0-0.03-0.01-0.04-0.03c-0.14-0.119-0.2-0.33-0.12-0.51
l2.88-6.68l3.32-8.53l0.069-0.149l-0.061,0.149c4.68,2.11,13.771,6.261,18.9,8.63l-0.33,6.2
C191.341,240.6,191.181,240.87,190.96,240.98z"/>
</shape>
<shape id="shape2">
<path fill="#CCCCCC" d="M305.425,65.506c0.171,0.181,0.271,0.53,0.23,0.78c-0.302,3.109-1.83,8.561-3.201,11.37
c11.01,2.86,30.551,2.75,41.541-0.239c0.34-0.091,0.778,0.069,1,0.351L305.425,65.506z"/>
</shape>
</shapes>
</svg>
And this is my code:
<html>
<body>
<object data="test.svg" id="svgholder" type="image/svg+xml"></object>
<script>
var svgholder = document.getElementById("svgholder");
svgholder.onload = function () {
console.log("svg loaded");
var shapes = svgholder.getElementsByTagName("shape");
console.log(shapes.length)
for (var i = 0; i < shapes.length; i++) {
shapes[i].addEventListener("click", showshape, this.id, false);
}
}
function showshape(id) {
console.log(id);
}
</script>
</body>
</html>