Javascript HTML错误无法设置null的属性(匿名函数)
我试图将文本框值存储到本地存储,但捕获到一个未捕获的TypeError:无法将属性“onclick”设置为null,并且不确定确切原因。一切似乎都被正确引用了。如有任何见解,将不胜感激Javascript HTML错误无法设置null的属性(匿名函数),javascript,html,error-handling,Javascript,Html,Error Handling,我试图将文本框值存储到本地存储,但捕获到一个未捕获的TypeError:无法将属性“onclick”设置为null,并且不确定确切原因。一切似乎都被正确引用了。如有任何见解,将不胜感激 <script type="text/javascript"> var save_button = document.getElementById('Save') save_button.onclick = saveData; function saveData() { var input
<script type="text/javascript">
var save_button = document.getElementById('Save')
save_button.onclick = saveData;
function saveData()
{
var input = document.getElementById("saveServer");
localStorage.setItem("server", input.value);
var storedValue = localStorage.getItem("server");
};
</script>
<label for="serveri">Server:</label>
<input type='text' name="server" id="saveServer" />
<button onclick="saveData()" type="button" value="Save" id="Save">Save</button>
var save_button=document.getElementById('save')
save_button.onclick=保存数据;
函数saveData()
{
var input=document.getElementById(“saveServer”);
setItem(“服务器”,input.value);
var storedValue=localStorage.getItem(“服务器”);
};
服务器:
拯救
如果上面没有显示我的问题,那么下面是JSFIDLE中的全部内容:在元素呈现在页面上之前,您正在查找该元素
由于您在HTML标记和JavaScript面板中包含了脚本块,所以您的小提琴被弄乱了。HTML标记中的一个正在触发错误,因为它没有在onload或documentready状态下运行 在正文后面写脚本。当脚本执行时,不会加载DOM。因此,没有id为“Save”的元素。您的代码在DOM准备就绪之前运行(因此
.getElementById
无法找到您的元素)
将代码更改为
// attach events for all browsers
var prefix = window.addEventListener ? "" : "on";
var eventName = window.addEventListener ? "addEventListener" : "attachEvent";
document[eventName](prefix + "load", init, false);
function init() {
var save_button = document.getElementById('Save');
save_button.onclick = saveData;
}
function saveData() {
var input = document.getElementById("saveServer");
localStorage.setItem("server", input.value);
var storedValue = localStorage.getItem("server");
alert(storedValue);
}
如果您取出脚本(只需包含正文中的html)并将其仅放在js区域中,您的小提琴就可以工作,因为这是使用加载脚本来渲染: 它正确地返回localStorage元素,并且一切都设置得很好 对于您的代码,请确保将其包装在onload事件中,例如:
<script type="text/javascript">
//<![CDATA[
window.onload=function(){ /* your js here */ }
//]]>
//
为什么您有一个内联处理程序和一个已定义的侦听器?在我的实际项目中,js仅在索引顶部引用。Figure id将它与JSFIDLE分开。问题仍然是在呈现元素之前调用它。就像我在你走进房间之前叫你的名字一样。我不会得到任何回应。如我在回答中所说,在window.onload或document ready上运行代码。@DenisTulskiy,因为这是跨浏览器的方式,我很高兴我没有任何理由不使用它jquery@denis同意,但如果只用于
load
事件,jquery就太过分了。。