0

Chrome でファイルを読み取るための Java スクリプトを作成しようとしていますが、Chrome の JavaScript デバッガーを使用しています。ここにスクリプトがあります:

function myFunction()
{
alert("I am an alert box!");
var e ;
var contents;
var control = document.getElementById("myfile");
  files = control.files;
console.log("Filename: " + files[0].name);
var reader = new FileReader();
reader.readAsText(files[0]);

reader.onload = function (e) { 


    contents = e.target.result;

    };

console.log("File contents: " + contents);
console.log("I am an alert box!");console.log("I am an alert box!");



}





</script>

コードを実行すると、コンテンツ変数は未定義です。これには多くの議論が行われましたが、解決策は見つかりませんでした。--allow-file-acess-from-files オプションを使用しています。現在、次のコードは奇妙な方法で動作します。

<script>
function myFunction()
{
alert("I am an alert box!");
var e ;
var contents;
var control = document.getElementById("myfile");
  files = control.files;
console.log("Filename: " + files[0].name);
var reader = new FileReader();
reader.readAsText(files[0]);

reader.onload = function (e) {
    contents = e.target.result ;
    };
console.log(e.target.result);
console.log("I am an alert box!");console.log("I am an alert box!");
}
</script>

「Uncaught TypeError: 未定義のプロパティ 'target' を読み取れません」というエラーがスローされますが、ウォッチ式ウィンドウでは、次の変数はファイルが読み取られていることを示しています。

event.target.result: "firmware file ↵:10000000782600204D4B0000B94B0000B94B000092 ↵:10001000B94B0000B94B0000B94B000000000000D4 ↵:10002000000000000000000000000000B94B0000CC ↵:10003000B94B000000000000B94B0000210B00008C ↵:10004000B94B0000B94B0000B94B0000B94B0000A0 ↵:10005000B94B0000B94B0000B94B0000B94B000090 ↵:10006000B94B0000B94B0000B94B0000B94B000080 ↵:10007000B94B0000B94B0000B94B0000B94B000070 ↵:10008000B94B0000B94B0000B94B0000B94B000060 and the same ouput for e.target.result and contents variable.

なぜコードの動作はそれほど奇妙なのですか? 親切に私を助けてください。私はjavascriptingにあまり熟練していません。

4

1 に答える 1

1

e.target2番目のconsole.logでは未定義になります.1つだけがonload関数内にあるため、e設定されています.

2 つ目は、一番上で定義された you に作用していvar e ;ます。これは null であるため、e.target.result無効です。

e: つまり、この行を削除するか、関数に移動します。

偽線

于 2013-09-25T01:35:04.173 に答える