javascript不能在头部工作但在身体中工作

时间:2017-06-17 20:37:31

标签: javascript html

嗨,我从http://jsfiddle.net/AbdiasSoftware/TsxzR/得到这个教程,当这段代码在body标签时这个工作正常但是当它在head标签中这不起作用我在javascript的业余请帮帮我

我的HTML代码:

 <input type="file" name="file" id="confirm">
 <input type="file" name="file" id="approveletter">

我的javascript代码:

document.getElementById('confirm').addEventListener('change', checkFile, false);
approveletter.addEventListener('change', checkFile, false);

function checkFile(e) {

var file_list = e.target.files;

for (var i = 0, file; file = file_list[i]; i++) {
    var sFileName = file.name;
    var sFileExtension = sFileName.split('.')[sFileName.split('.').length - 1].toLowerCase();
    var iFileSize = file.size;
    var iConvert = (file.size / 10485760).toFixed(2);

    if (!(sFileExtension === "pdf" || sFileExtension === "doc" || sFileExtension === "docx") || iFileSize > 10485760) {
        txt = "File type : " + sFileExtension + "\n\n";
        txt += "Size: " + iConvert + " MB \n\n";
        txt += "Please make sure your file is in pdf or doc format and less than 10 MB.\n\n";
        alert(txt);
    }
}
}

感谢

2 个答案:

答案 0 :(得分:2)

这是因为当您将脚本放在head标记中时,DOM还没有完全解析。

您可以将代码包装在来自 function cmdCalc_Click() { calculate(); } function calculate() { A = parseInt(document.getElementById("A").value); B = parseInt(document.getElementById("B").value); C = parseInt(document.getElementById("C").value); x = document.getElementById("x"); y = document.getElementById("y"); x.innerHTML = (3 * C); y.innerHTML = (((A + B) / 2 ) * 2)); }对象的DOMContentLoaded事件上,并且它将在head标记处起作用,因为它将等待并且仅在DOM完全加载时才会执行。但是,出于性能目的,建议您将其放在关闭正文标记之前,正如您所做的那样。

document

另请参阅:Where should I put <script> tags in HTML markup?

答案 1 :(得分:0)

将此JavaScript代码放在javaScript库之后