2015-04-22 96 views
1

你好我是新来的JavaScript,我试图写出一些测试网站的代码,我有一些问题,下面的道琼斯是我的代码和我不断收到这个错误,我不明白为什么。Js,document.getElementById(“ID”)。innerHTML,错误

TypeError: null is not an object (evaluating 'document.getElementById("h3").innerHTML = "<h3>You Are up to date!</h3>"')

这是我的第二种方法我尝试使用。我试图做的事情有一个版本列表,这是我的第一个版本列表,它会拉一个.js文件并建立一个表格,但那不起作用,所以我想我会试试这个,但是猜猜看是什么发生了什么?不工作

我现在使用的代码如下。如果你能提供帮助,那将是惊人的。 感谢,Dakmessier

var current = "1.0"; 
function get_latest(){ 
document.getElementById("bob").innerHTML = current; 
} 

if (local != current){ 
document.getElementById("Get").innerHTML = "<button><a href=\"bla\">Get the Latest Update!</a></button>"; 
} else if (local == current){ 
document.getElementById("h3").innerHTML = "<h3>You Are up to date!</h3>"; 
} else { 
document.getElementById("h3").innerHTML = "<h3>Sorry, unable to check for update.</h3>"; 
} 
+1

有ID为'h3'没有元素,这是一个标记名 – adeneo

+0

以及我增加了一个ID,这是H3,但我一直与我的代码,并已删除该ID和我现在更新上面的代码 – Dakmessier

+0

你已经展示了你的JavaScript,你能否展示JavaScript预期能够工作的相关HTML? –

回答

2

document.getElementById(id)发现与价值在你的HTML给定ID的元素。值的ID如下:

<div id="myHeader">Some Content</div> 

而且,然后你可以找到与该元素:

document.getElementById("myHeader"); 

ID值必须是每个文档中唯一的,所以应该永远只能是给定的一个元素ID。


如果ID是不是你真正想要的,你可以找到的元素等方式,根据标签类型,按类名,属性等等...使用CSS选择器与document.querySelectorAll()什么。

例如,如果你想找到所有<h3>标签,你可以这样做:

var items = document.querySelectorAll("h3"); 

这里有一些其他的原因,document.getElementById(...)可能无法找到你想要找什么:

  1. JavaScript代码在DOM元素被分析和加载之前运行,因此当您运行代码时,元素实际上还没有存在。这与从文档<head>部分运行的代码相同。

  2. 如何在HTML中指定id值时发生HTML错误。

  3. 您有一个HTML错误导致浏览器无法正确解析您的HTML。

  4. 您有一个脚本错误导致您的脚本在到达要运行的部分之前中止。

+0

是的,我明白,这就是我我已经去了,但我仍然得到那个错误 – Dakmessier

+0

@Dakmessier - 你需要向我们展示你的HTML(理想地向我们展示整个文档)。它可能找不到所需项目的另一个原因是,如果您在加载DOM之前正在运行JavaScript(例如代码正在文档的“”部分中运行)。 – jfriend00

+0

所以如果我改变'

0

确实document.getElementById如果找不到指定了Id的元素,则返回null。

而且声明:

if (local != current){ 
// .. 
} else if (local == current){ 
// .. 
} else { 
// .. 
} 

是有点奇怪。如果local != currentfalse那么local == current必须是trueelse if (...)是多余的,else部分将永远不会运行。

+0

好吧,我只是让人们下载网站使用,所以然后.js文件托管在其他地方,这是本地。文件,所以如果它找不到当前的变种,那么将会去其他人,并说它找不到它 – Dakmessier

+0

无论如何,无法到达'else'部分。 – robbmj

0

嗨,哥们,你应该做的韧皮事情是下面的例子中,随时将它复制您的代码片段:

function myFunction() { 
 
    document.getElementById("demo").innerHTML = "Paragraph changed!"; 
 
}
<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<p id="demo" onclick="myFunction()">Click me to change my HTML content (innerHTML).</p> 
 

 
</body> 
 
</html>

我将解释这样的回答:这是一个HTML +内联脚本,使内部的HTML工作。至于与你的答案有关你不知道你的代码停止在哪里,无论如何测试我的代码片段,并让我知道

0

我知道这是一个古老的问题,但我有同样的问题,并试图找到解决方案一段时间。

问题是我在加载页面之前执行脚本。因此无法找到我们试图捕捉的对象。

所以要么使用jquery document.ready函数,要么将脚本移动到html的末尾。

我希望这有助于

相关问题