2016-12-03 64 views
-5

問題:的JavaScript:給予的getElementById錯誤空

我想提出一個簡單的演示現場擺弄JavaScript和試圖改變的元素顯示在值點擊一個按鈕來阻止時,我得到一個"TypeError: document.getElementById(...) is null"

似乎很簡單,但錯誤是持久的。我嘗試了使用window.onload或將腳本放在body標籤底部的建議解決方案,但沒有任何幫助。任何人都可以幫助我,並指出我可能做錯了什麼? (PS我2天到學習JS)

<nav class="middle"> 
    <ul> 
    <li><a href="#intro" onclick="buttons()">Intro</a></li> 
    <li class="line">|</li> 
    <li><a href="#about" onclick="buttons()">About</a></li> 
    <li class="line">|</li> 
    <li><a href="#contact" onclick="buttons()">Contact</a></li> 
    <!--<li><a href="#elements">Elements</a></li>--> 
    </ul> 
</nav> 

<div id="about"> 
    <header id="header2"> 
    <h1>Farhan Chandel</h1> 
    <h3> Software Systems Major</h3> 
</header> 
</div> 


JS代碼

功能按鈕(){
的document.getElementById(約) .style.display = 「塊」; }

我的歉意,括號中的'名稱'來自以前不同的嘗試來解決問題。我已將其改回原始問題。

更多說明: 'about'div的顯示風格爲none; 並點擊其中一個按鈕我希望它將其設置爲阻止。 從閱讀我瞭解到,這很可能是由於在腳本運行時尚未註冊div,但我已將腳本標記放在所有內容下面,所以我很困惑他們爲什麼沒有被註冊腳本運行的時間。

+6

請在您的文章中包含任何代碼片段作爲文本。代碼的圖片確實使它更難以幫助,所以更少的用戶願意嘗試。問題編輯器中的「{}」按鈕將幫助您將它們格式化爲代碼塊。 –

+0

[爲什麼jQuery或像getElementById這樣的DOM方法找不到元素?](http://stackoverflow.com/questions/14028959/why-does-jquery-or-a-dom-method-such- as-getelementbyid-not-the-element) –

+1

而不是字符串id,你已經在'document.getElementById(name)'這裏使用了變量'name'。你能告訴你聲明變量'name'的位置嗎?如果你可以在這裏複製粘貼代碼,而不是一個不清楚的截圖,並且沒有html的完整代碼可見性,那會更好。如果name是字符串,那麼它應該是這樣的,'document.getElementById('name')'帶'quote' – Aruna

回答

0

我猜

document.getElementById("name").style.display = "none"; 

你是不是在 「引號」 當頭IDClassTag name名;見this example

0

看起來你沒有在HTML頁面中的「名稱」ID,而看屏幕截圖。

and document.getElementById(「name」)< == ID名稱應該在報價(「div_name」)內。

document.getElementById("DIV_NAME").style.display = "block"; 

試試這個。

+0

我已更新並修復了我的問題。請再看一遍。 –

2

到目前爲止,還沒有指定應該有這種說法有什麼價值name

document.getElementById(name).style.display="block"; 

這不是徹底失敗,因爲您的瀏覽器有already defined name as a global,其目的是要找出window本身。雖然,全球的默認值是一個空的字符串:

console.log(name); // "" 

使用全局,語句的含義一樣:

document.getElementById("").style.display="block"; 

而且,getElementById()不會匹配基於一個元素在一個空字符串上,所以它返回null告訴你「找不到匹配的元素」。

解決這個

一個選項...

您可以定義自己的name,一個組織現有僅在功能從全球分開,作爲命名參數:

function buttons(name) { 
    // ... 
} 

然後,提供您想要用作參數的值:

<li><a href="#intro" onclick="buttons('intro')">Intro</a></li> 
<!--         ^^^^^^^ 

現在,這一說法,聲明的行爲一樣:

document.getElementById('intro').style.display="block"; 

注意報價的混合 - 雙引號的HTML屬性和單引號的JavaScript字符串。這是爲了避免2個解析器,HTML和JavaScript,互相扯皮,並且有人相信它的值早於預期地結束。

+0

我已更新我的原始帖子,請再看一遍!謝謝 –

相關問題