javascript - 根据下拉选择更改图像

标签 javascript ajax xml

这是我的 html 文件。我试图在下拉选择更改后在 div 部分显示图像。图像的来源位于 XML 文件中。它给出一个错误,指出 Cannot set property 'src' of null。请帮忙。

HTML

<!DOCTYPE html>
    <html>
        <head>
            <title>
            </title>
            </head>
    <body>

    <img id="change" src="ecomm.jpg" onload="loadXMLDoc()"/>
      <div id="imagechange" >

          </div>

    </body>
    </html>

脚本

function loadXMLDoc() {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            myFunction(xmlhttp);
        }
    };
    xmlhttp.open("GET", "bf.xml", true);
    xmlhttp.send();
}

function myFunction(xml) {
    var i;
    var xmlDoc = xml.responseXML;

    var x = xmlDoc.getElementsByTagName("food");

    var str ="<select id='image' onchange='changeFunc(this.value);'>";
    str+= "<option value='select image'> Select Image </image>";

    for(i=0;i<x.length;i++){
        str +='<option value=' + x[i].getElementsByTagName("source")[0].childNodes[0].nodeValue + '>' + x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue + '</option>'; 
    }

    str +='</select>';
    document.write(str);

}

function changeFunc(val) {
    document.getElementById('change').src = val;
}

最佳答案

这是因为document.write(str); 此方法用 str 替换整个文档,从而删除 'change'

您想要使用 document.getElementById('change').appendChild(str) 附加元素。

http://www.w3schools.com/jsref/met_node_appendchild.asp

关于javascript - 根据下拉选择更改图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37004783/

相关文章:

javascript - jQuery Ajax : Sucess Response parameter overwriting

android - R 无法解析为变量,XML 问题?

xml - 如何为 XML Schema 中的 fractionDigits 限制指定最小值?

java - 以高效的方式将 XML 解析为 JAVA POJO

javascript - 在 Chrome 中,页面不会在 Ajax 加载后调整大小

javascript - 如何读取文本框中的值并添加一些扩展名

javascript - 如何从缓冲区返回文件流?

javascript - 单元测试工厂 Jasmine-Sinon

php - 受密码保护的相册 PHP/MySQL 服务器负载

javascript - 使用 JS/PHP 验证登录表单