添加参数时不会调用回调

时间:2013-07-13 00:38:47

标签: javascript events callback cordova

我有一个javascript回调,在传递参数时没有被调用。这是在jsbin中工作,所以有什么理由不能在phonegap中工作。这应该非常简单。

<input type="file" id="soundInput">
<script type="text/javascript">
var type = 0;
function addSoundToSoundMenu() {
    alert("callback success.");
}
var soundInput = document.getElementById('soundInput');
soundInput.addEventListener('change', function(e) {
    handleFileSelect(e, type,addSoundToSoundMenu);
}, false); 

function handleFileSelect(event, type, cb) {
    var file = this.files[0]; // FileList object
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) {
        gotFS(fs,file,type);
    }, fail);
}
</script>

上面的例子没有调用handleFileSelect()。它仅在没有任何参数的情况下传递handleFileSelect时有效。

soundInput.addEventListener('change',handleFileSelect,false); 

并且当然我将args移除到handleFileSelect()以使其工作。

我有什么遗失的东西。以编程方式创建输入字段是否会更改事件调度程序的处理方式。

还有什么我可以尝试的,也许是关闭的东西?以前有没有人遇到过这个问题?我无法想象它与phoneGap有什么关系。

2 个答案:

答案 0 :(得分:0)

您没有将事件对象传递给handleFileSelect函数。请这样做,看看。

soundInput.addEventListener('change', function(e) {
    handleFileSelect(e, type,addSoundToSoundMenu);
}, false); 

答案 1 :(得分:0)

感谢您的帮助,我发现了问题,只是为了解决问题所在的问题

var file = this.files[0]; // FileList object
在handleFileSelect函数中

。如果handlFileSelect不是事件的直接回调,则“this”不包含文件对象。

没有调试器的编程乐趣......

诅咒你Weinre!