单击“选择文件”时,我有以下代码:
$(':file').change(function () {
if(this.files.length == 1) {
$('#selected_files').html("<h4>Attaching " + this.files.length + " file</h4>");
} else {
$('#selected_files').html("<h4>Attaching " + this.files.length + " files</h4>");
}
$('#selected_files').append("<table class=\"altShaded\"><thead><tr><td></td><td>Filename</td><td>Size</td></tr></thead>");
for(x=0;x<=this.files.length;x++)
{
var file = this.files[x],
name = file.name,
size = file.size,
type = file.type;
$('#selected_files').append("<tr><td></td><td><b>" + name + "</b> ("+filesize(size)+") " + type + "<br>");
}
});
好吧,对吧?一切都运转良好。这很棒,除了当 jQuery 附加表行时,它似乎喜欢开始一个新表,并且顶部<thead>
未附加到行(在 Chrome 中)。
好吧,我想,我们只需构建一个字符串并将其全部放入即可。
Thus:
$(':file').change(function () {
if(this.files.length == 1) {
var displayFiles = "<h4>Attaching " + this.files.length + " file</h4>";
} else {
var displayFiles = "<h4>Attaching " + this.files.length + " files</h4>";
}
var displayFiles = displayFiles + "<table class=\"altShaded\"><thead><tr><td></td><td>Filename</td><td>Size</td></tr></thead>";
for(x=0;x<=this.files.length;x++)
{
var file = this.files[x],
name = file.name,
size = file.size,
type = file.type;
displayFiles = displayFiles + "<tr><td>" + type + "</td><td><b>" + name + "</b></td><td>"+filesize(size)+"</td></tr>";
}
$('#selected_files').html(displayFiles);
});
但现在突然出现以下错误:
*未捕获的类型错误:无法读取未定义的属性“名称”*
除了周围的代码之外,什么都没有改变。它指向的是:
名称=文件名,
你能告诉我这里有什么问题吗?
此类错误意味着您的容器变量file
没有定义。
你应该使用console.log
在不同的地方查看已定义的内容和未定义的内容(您的文件数组等)
Also :
for(x=0;x<=this.files.length;x++)
最后将是未定义的x
值,因为数组的最后一个元素位于array.length - 1
and not array.length
,这会在循环结束时给您一个未定义的值,这可能是错误的根源。在你的情况下, x 的值this.files.length
另外,始终使用 var,否则你的x
将是一个全局变量,这可能是问题的另一个根源。
正确的循环应该是:
for (var x = 0; x < this.files.length; x++)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)