利用HTML5的画布功能,通过按钮加载一张图片,为什么显示不了啊

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>加载图片</title>

</head>

<body>

    <canvas id="demo" width="400" height="400" style="border:1px solid red"></canvas>
    <script type="text/javascript">
        var canvas = document.getElementById("demo");
        var cxt = canvas.getContext("2d");




        function preImg(sourceId, targetId) {
            cxt.clearRect(0, 0, 400, 400);
            if (typeof FileReader === 'undefined') {
                alert('Your browser does not support FileReader...');
                return;
            }
            var reader = new FileReader();

            reader.onload = function (e) {
                var img = document.getElementById(targetId);
                var cxt = document.getElementById("demo").getContext("2d")
                img.src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=1557124323,393705227&fm=116&gp=0.jpg";
                img.onload = function () {
                    cxt.drawImage(img, 0, 0);
                }
            }
            reader.readAsDataURL(document.getElementById(sourceId).files[0]);
        }
    </script>

<input name="button" type="button" id="bt_display" onclick="preImg(sourceId, targetId)" value="图片一"/> 

</body>
</html>



你的sourceId,targetId在哪,没定义报错了

怎么修改才能实现我想要的效果呢?

preImg(sourceId, targetId)是个通过canvas在画布上绘制你上传图片的函数,括号里的两个参数 你都没传,而且你的两个参数在body中并没有,
你是应用H5 的FileReader接口来读取图片的,但是你还没定义 就直接用typeof FileReader 这样没报错么?
建议看FileReader的接口和一定的canvas基础知识再来弄

再说,你这是H5的DTD吗?