window.onload = function() {
var count = 0;
document.getElementById('files').addEventListener('change',
handleFileSelect, false);
function handleFileSelect(evt) {
console.log("hariii");
var files = evt.target.files;
// Loop through the FileList and render image files as thumbnails.
for (var i = 0, f; f = files[i]; i++) {
count++;
// Only process image files.
if (!f.type.match('image.*')) {
continue;
}
var reader = new FileReader();
// Closure to capture the file information.
reader.onload = (function(theFile) {
return function(e) {
// Render thumbnail.
var span = document.createElement('span');
span.innerHTML = ['<img style="height: 75px; border: 1px solid #000;
margin: 5 px " src="
',
e.target.result,
'" title="', escape(theFile.name),
'"/>'
].join(''); document.getElementById('thumbnail').insertBefore(span null);
};
})(f);
// Read in the image file as a data URL.
reader.readAsDataURL(f);
}
//console.log(count);
return (count)
}
}
我的javascript不好。我想从使用此
尝试的eventlistnernfunction返回值'count'var x = handleFileSelect(evt);
console.log(x);
但它给出了错误。 'handlefileselect未定义'。我知道这是一个愚蠢的但我是javascript的新手。感谢您的想法和帮助。
答案 0 :(得分:0)
我找到了一种访问返回值的方法。但这不是标准方式。这是一个小技巧。在html正文部分中创建隐藏字段,并将javascript变量值分配给该隐藏字段。当该值需要时,通过document.ElementBy方法获取该字段值。它工作正常但不是标准方式。
答案 1 :(得分:0)
问题是为什么变量count
不能作为此事件监听器(或任何其他事件监听器/处理程序/回调)的返回,不是因为它是一个事件(填空),因为count
的性质和目的。它的假定目的是count
是一个简单的计数器,计数器通常是全局的(在这种情况下),并且在迭代中递增(在这种情况下也是如此) 。作为一个全球性的,count
可以从任何地方访问。在count
递增后count++
,您可以获得var files = document.getElementById('files');
var count = 0;
files.addEventListener('change', handleFileSelect, false);
function handleFileSelect(evt) {
var counter = evt.target.nextElementSibling;
var dock = document.getElementById('thumbnail');
var files = evt.target.files;
for (let i = 0; i < files.length; i++) {
var f = files[i];
count++;
if (!f.type.match('image.*')) {
continue;
}
var reader = new FileReader();
reader.onload = (function(file) {
return function(e) {
var str = `
<span class='frm'>
<img src="${e.target.result}" class='tmb' title="${escape(file.name)}">
</span>`;
dock.insertAdjacentHTML('beforeend', str);
};
})(f);
reader.readAsDataURL(f);
}
counter.textContent = count;
console.log(count);
}
的值。
此演示是this article中修改过的 工作 演示。如果您需要详细信息,请访问:
.tmb {
height: 100px;
width: 75px;
border:1px solid #000;
margin: 5px
}
.frm {
display: inline-block;
}
label, input {
font: 700 16px/1.45 Consolas;
color: red;
}
label {font-size:32px}
&#13;
<input id='files' type='file' name='files' accept="image/*"> <label for='files'></label><br>
<output id='thumbnail'></output>
&#13;
{{1}}&#13;