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;