Js,document.getElementById(“ID”)。innerHTML,错误

时间:2015-04-22 23:22:59

标签: javascript

你好我是javascript的新手,我试着为测试网站写出一些代码而且我遇到了一些问题,下面是我的代码,我一直得到这个错误,我无法想象为什么。

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>";
}

4 个答案:

答案 0 :(得分:2)

document.getElementById(id)在HTML中找到具有给定ID值的元素。 id值如下所示:

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

然后,您可以找到该元素:

document.getElementById("myHeader");

每个文档中的ID值必须是唯一的,因此只能有一个具有给定ID的元素。

如果id不是你真正想要的,你可以通过标签类型,类名,属性等找到其他方式的元素......使用带有document.querySelectorAll()的CSS选择器。

例如,如果您想查找所有<h3>标记,则可以执行以下操作:

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

以下是document.getElementById(...)可能无法找到您希望找到的内容的其他一些原因:

  1. 在解析和加载DOM元素之前,Javascript代码正在运行,因此当您运行代码时,元素实际上还没有。对于从文档的<head>部分运行的代码,这很常见。

  2. 您在HTML中指定ID值时出现HTML错误。

  3. 您遇到HTML错误导致浏览器无法正确解析您的HTML。

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

答案 1 :(得分:0)

如果 @Override public boolean onCreateOptionsMenu(Menu menu) { Log.v( this.getClass().getName() + "!!!", new Exception().getStackTrace()[0].getMethodName() ); MenuItem m_item = (MenuItem)menu.findItem(R.id.action_settings); if(m_item != null) m_item.setTitle("Back to test"); // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.settings, menu); return true; } 无法找到指定了Id的元素,则document.getElementById会返回null。

声明:

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

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

答案 2 :(得分: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工作。至于关注你的答案,不清楚你的代码停在哪里,无论如何测试我的代码片段让我知道

答案 3 :(得分:0)

我知道这是一个老问题,但我遇到了同样的问题,并且在一段时间内努力寻找解决方案。

问题是我在加载页面之前执行了脚本。因此,它无法找到我们想要抓住的对象。

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

我希望这会有所帮助