Search code examples
javascriptappendchild

Javascript appendChild not showing the correct image


I'm making a simple game with a background, three buttons but have run into a hiccup. The

document.body.appendChild(img);

Doesn't append the image, only shows the alt text. This is what I have so far:

<script>
    document.body.style.backgroundImage =
    "url('./back.jpg')";
    document.body.style.backgroundSize = 'contain';
    document.body.style.backgroundRepeat = 'no-repeat';
    document.body.style.backgroundPosition = 'center';
    document.body.style.backgroundSize = '100%';    

    function show_image(src, width, height, alt) {
      var img = document.createElement("img");
      img.src = src;
      img.width = width;
      img.height = height;
      img.alt = alt;
      document.body.appendChild(img);
    }

    show_image("url('./b.png')", 100,100,"btnBlue")
</script>

This is what I Get :

Result

What am I doing wrong?


Solution

  • You are formatting your image URL like a CSS background property, the <img> element source just takes the URL itself:

    show_image("url('./b.png')", 100, 100, "btnBlue") would become show_image("./b.png", 100, 100, "btnBlue")

    function show_image(src, width, height, alt) {
      var img = document.createElement("img");
      img.src = src;
      img.width = width;
      img.height = height;
      img.alt = alt;
      document.body.appendChild(img);
    }
    
    show_image("https://picsum.photos/200", 100, 100, "btnBlue")