手机版

JavaScript 图片上传预览效果(9)

发布时间:2021-06-07   来源:未知    
字号:

该文档说了怎么在页面做图片预览, 一步一步的

_upload上传文件对象:它本身已经有一个dispose方法来销毁程序;

_preload预载图片对象:先清除它的onload/onerror事件再移除元素;

file和img属性:直接设为null,由于不是程序创建的元素,留给使用者来移除。

说到移除元素,顺便说一下超空间(DOM hyperspace),这是从“ppk谈javascript”中看到的。 大概指的是当元素不在dom里面,而js又有关联时,元素并不会消失,而是保存在一个称为“超空间”的地方。

详细参考书的DOM 超空间部分。

书中还说可以根据是否有parentNode来判断元素是否在超空间,但测试以下代码:

<body></body>

<script>

var elm = document.createElement("div");

alert(elm.parentNode);

document.body.removeChild(document.body.appendChild(elm));

alert(elm.parentNode);

</script>

第一次parentNode都是null,没有问题,按理第二次也应该是null,但ie却是一个object。 经测试,这个object的nodeType是11,也就是一个碎片对象(FRAGMENT)。

而且各个被removeChild移除的元素的parentNode都不相同,即会生成不同的碎片对象。 这种情况算不算在“超空间”呢,不过书中也只是说“一般来说”,也不用太考究。

那么用innerHTML清除呢?再测试以下代码:

<body><div id="test"></div></body>

<script>

var elm = document.getElementById("test");

document.body.innerHTML = "";

alert(elm.parentNode);

</script>

结果在ie也是null了,看来removeChild和innerHTML在清除元素时产生了不同的结果。 那个碎片对象貌似没什么用(难道为了保证有parentNode?),那是不是innerHTML就一定比removeChild好呢?

再测试以下代码:

代码

JavaScript 图片上传预览效果(9).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)