开发者问题收集

JavaScript 抛出错误“未捕获类型错误:无法设置属性‘值’为 null”,但元素已存在

2018-03-14
1613

我正在使用 jsp。jsp 文件中有一个 <input> 元素。但是当我尝试使用 javascript 设置 <input id="digipan" name="digipan" type="hidden" value="" ></input> 的值时,我收到此错误:“Uncaught TypeError:无法将属性‘value’设置为 null”。 这是我的 html 代码:

<div class="col-xs-12 contactDetails">
        <div class="col-md-6">
           <mark>PAN Card</mark>
            <div >
               <label style="color: red">Choose File:</label> 
               <div class="form-group">
                 <input type='file' id="PAN_Card" name="PAN_Card" /> <div id="dl_pan"> OR <div class="share_fm_dl" id="attachment_poi" ></div></div>
               </div>
               <div id="digipanfile" name="digipanfile"></div>
               <input id="digipan" name="digipan" type="hidden" value="" ></input>
             </div>
       </div>
    </div>

这是我的 Javascript 代码:

document.getElementById('digipanfile').innerHTML = "File:<a href=" + response + ">" + filename + "</a>";
        document.getElementById('digipan').value = response;
        document.getElementById('PAN_Card').style.display = 'none';

此 javascript 代码位于一个函数内,该函数仅在页面加载后执行。 此外,查看页面源代码显示此 <input> 标记,但检查元素未显示它。 注意:- 我已经在使用 jQuery 文档就绪方法,但仍然出现此错误。

2个回答

您必须等到文档加载完毕。因此,您应该在 javascript 文件中使用“load”事件侦听器:

window.addEventListener("load", e => {
        document.getElementById('digipanfile').innerHTML = "File:<a href=" + response + ">" + filename + "</a>";
        document.getElementById('digipan').value = response;
        document.getElementById('PAN_Card').style.display = 'none';
    })

您还可以使用 jQuery 方法 window load 和 document ready。两者大致同时发生。如果您想知道其中哪一个先触发,您应该运行此代码以了解:

$(document).ready(function() {
      alert("document ready occurred!");
});

$(window).load(function() {
      alert("window load occurred!");
});
alexleo2000
2018-03-14

在 DOM 完全加载后触发所有脚本是一种很好的做法。正如 alexleo2000 提到的,您可以将脚本函数包装在 window.load(function() { //here goes your script function }) 中

Gururaj
2018-03-14