从javascript循环中的函数中检索变量
我在以下脚本中遇到问题: 当用户单击上载按钮并选择一些图像时,它会创建从javascript循环中的函数中检索变量,javascript,function,variables,loops,Javascript,Function,Variables,Loops,我在以下脚本中遇到问题: 当用户单击上载按钮并选择一些图像时,它会创建divs,并为每个图像添加一个图像 但是,我无法从函数中检索tba变量。我知道这个问题已经被问过好几次了,我尝试了很多不同的方法(包括函数中的reader.onload),但是我没有成功地检索到这个变量 <script type="text/javascript"> $(document).ready(function() { function readURL(input) {
divs
,并为每个图像添加一个图像
但是,我无法从函数中检索tba
变量。我知道这个问题已经被问过好几次了,我尝试了很多不同的方法(包括函数中的reader.onload
),但是我没有成功地检索到这个变量
<script type="text/javascript">
$(document).ready(function() {
function readURL(input) {
if (input.files) {
var tba = '';
for (var i = 0; i < input.files.length; i++) {
if(input.files[i]) {
var reader = new FileReader();
reader.onload = function (e) {
tba += '<div class="gallery_image"><img src="'+e.target.result+'" alt="Image currently not accessible" /></div>';
};
reader.readAsDataURL(input.files[i]);
}
}
$('#gallery_container').html(tba);
}
}
});
</script>
$(文档).ready(函数(){
函数readURL(输入){
if(input.files){
var-tba='';
对于(var i=0;i
非常感谢您的帮助,祝您愉快。中的变量
tba
仅在您的功能范围内可用。要访问此函数外部的tba
,请将声明也移到该函数外部
// global
var tba = '';
$(document).ready(function() {
function readURL(input) {
if (input.files) {
tba = '';
编辑:
由于我的答案的第一部分没有提供所需的帮助,那么直接删除tba
并进行DOM操作怎么样
您的函数应该如下所示:
<script type="text/javascript">
$(document).ready(function() {
function readURL(input) {
if (input.files) {
$('#gallery_container').html(''); //clear the container
for (var i = 0; i < input.files.length; i++) {
if(input.files[i]) {
var reader = new FileReader();
reader.onload = function (e) {
// append your generated HTML directly
$('#gallery_container').append('<div class="gallery_image"><img src="'+e.target.result+'" alt="Image currently not accessible" /></div>');
};
reader.readAsDataURL(input.files[i]);
}
}
// removed the dom manipulating part here
}
}
});
</script>
$(文档).ready(函数(){
函数readURL(输入){
if(input.files){
$('#gallery_container').html('')//清除容器
对于(var i=0;i
如果在函数外部定义变量,它将从函数中获取值。
这称为全局范围,否则它仅在函数范围内可用
选中此项:
var a = 30;
function foo() {
a = 25;
}
foo();
alert(a); // will give 25
检查现场
因此,您的代码应该如下所示:
<script type="text/javascript">
$(document).ready(function() {
var tba = '';
function readURL(input) {
if (input.files) {
for (var i = 0; i < input.files.length; i++) {
if(input.files[i]) {
var reader = new FileReader();
reader.onload = function (e) {
tba += '<div class="gallery_image"><img src="'+e.target.result+'" alt="Image currently not accessible" /></div>';
};
reader.readAsDataURL(input.files[i]);
}
}
$('#gallery_container').html(tba);
}
}
});
</script>
$(文档).ready(函数(){
var-tba='';
函数readURL(输入){
if(input.files){
对于(var i=0;i
对不起,我想我的问题不够精确。问题是我无法从reader.onload=function(e)中检索tba。连接起作用,但我无法访问此函数的最终值。由于tba
从一开始就不是全局的,请尝试我的示例,如果仍然不起作用,请报告。请查看我的编辑。我希望这能解决你的问题。事实上这正是我想到的,谢谢你的努力!你试图解决错误的问题。不要试图使变量“脱离函数”。而是在函数中使用它。此时无法检索tba
(“#gallery\u container”).html(tba)代码>