Javascript HTML JS返回错误';无法设置空值';
大家好,我试图使用Javascript HTML JS返回错误';无法设置空值';,javascript,html,Javascript,Html,大家好,我试图使用innerHTML,但它总是返回空错误。我跟随论坛中的一些帮助在html之后加载JS部分。我尝试使用onload方法,但仍然失败。但当我尝试使用alert时,变量确实保存了该值。下面是我正在使用的示例代码 错误:未捕获类型错误:无法将属性“innnerHTML”设置为null var islid=1; 变量通知=新数组( “维京人”, “狼”, “转”, “气味”); window.onload=函数滑块(){ document.getElementById(“#displ
innerHTML
,但它总是返回空错误。我跟随论坛中的一些帮助在html之后加载JS部分。我尝试使用onload
方法,但仍然失败。但当我尝试使用alert时,变量确实保存了该值。下面是我正在使用的示例代码
错误:未捕获类型错误:无法将属性“innnerHTML”设置为null
var islid=1;
变量通知=新数组(
“维京人”,
“狼”,
“转”,
“气味”);
window.onload=函数滑块(){
document.getElementById(“#displayfacts”).innnerHTML=通知[islid];
$(“.slideshow#i”+islid+,#displayfacts”).fadeIn(1000);
$(“.slideshow#i”+islid+,#displayfacts”)。延迟(3000);
$(“.slideshow#i”+islid+,#displayfacts”)。淡出(2000);
(islid您将元素的id与元素的CSS(和jQuery)选择器(按其id)混淆。如果您有此元素:
<div id="displayfacts">...</div>
。。。
然后它的id只是“displayfacts”,而不是“displayfacts”,所以您希望在代码中使用document.getElementById('displayfacts');
(注意没有#)
您当前试图获取对id为#displayfacts
(即…
)的元素的引用,该元素返回null(因为没有匹配的元素)因此,当您尝试设置innerHTML属性时,会出现错误。如果我们看不到您的HTML很难帮助,但检查js时,似乎在调用getElementById时使用的是“#displayfacts”,而它应该是“displayfacts”
如果您使用jquery,为什么要使用getElementById?代码中有两个问题
改变
document.getElementById("#displayfacts").innnerHTML = notices[islid];
要(删除#
,因为id是displayfacts
而不是#displayfacts
)
也改变
(islid<5)?islid++:islid=1;
(islidinnnerHTML-正确地说是带有2个n的innerHTML
试试这个:
var innerHTML = "";
if(notices[islid] != null)
{
innerHTML = notices[islid];
}
document.getElementById("#displayfacts").innerHTML = innerHTML;
你能显示html吗?你有一个id为displayfacts
的html元素吗?共享一个小提琴打开一个调试窗口。在document.getElementById
行上放置一个断点。键入表达式document.getElement.ById(“#displayfacts”)
进入控制台查看其值。感谢大家的回答。我犯了别人指出的两个错误。innerHTML的拼写错误,应该在getElementById中使用(“displayfacts”)而不是(#displayfacts)“如果您使用jquery,为什么要使用getElementById?”为什么不呢?不管怎样,jQuery只会调用该方法,所以您只需创建一个jQuery对象和一个额外的方法调用,就可以实现完全相同的效果。好的一点,@AnthonyGrist,使用jQuery和vainilla js似乎让他混淆了用“#”来调用id这一定是我犯过的最愚蠢的错误。谢谢你指出。谢谢你。代码比我发布的更多。我只发布了一个示例。但即使这样,内部html部分也不会出现。如果可以的话,我会发布一个JSFIDLE。jquery的.html也不起作用。@Sammy和jquery的.html也不起作用
是一个错误,请检查againI是否使用.html()作为赋值,这就是问题所在。抱歉,我刚刚开始使用jQuery。我将学习更多语法。感谢您的时间。OMG谢谢。对此我真的很抱歉。下次我会更加小心。
(islid<3)?islid++:islid=0; //since your array has only 4 elements
var islid=0;
var notices = [ "The Vikings", "Wolves", "Turn", "Smell"];
window.onload = function slider() {
$("#displayfacts").html( notices[islid] );//why not use jquery only
$(".slideshow #i"+islid+",#displayfacts").fadeIn(1000);
$(".slideshow #i"+islid+",#displayfacts").delay(3000);
$(".slideshow #i"+islid+",#displayfacts").fadeOut(2000);
(islid<3)?islid++:islid=0;
setTimeout(slider, 6000);
}
var innerHTML = "";
if(notices[islid] != null)
{
innerHTML = notices[islid];
}
document.getElementById("#displayfacts").innerHTML = innerHTML;