2015-10-08 54 views
3

查找了幾個這個問題的「答案」,但它主要是人們沒有將getElementsByName()作爲NodeList返回的結果進行處理!getElementsByName不起作用

編輯:我試圖根據被點擊的元素來隱藏/顯示元素。我可能硬編碼這使用document.getElementById,只是每次添加一個我有我想隱藏/顯示的元素。但是如果我能夠檢索所有名爲something的元素並且只是對它們運行一個循環來隱藏/顯示,那將是理想的。然後,我可以在寫入時標記具有名稱的元素,並且此循環可以不加改變地工作。在我的代碼下面,只是試圖彈出一個包含該值的警報用於測試目的。至於現在,它始終打破空錯誤。我正在使用和設計Internet Explorer 9,因爲這是公司使用的。

代碼:

<input type="radio" name="Area" value="Engineering" id="EngineeringCheck" onclick="javascript: ShowContentEngineering();" />Engineering 

<script type="text/javascript"> 
    function ShowContentEngineering() { 
     alert(document.getElementsByName('EngineeringAreas')[0].value) 
     document.getElementById('InformationBlock').style.display = 'block'; 
} 
</script> 

<h5 name="EngineeringAreas" value="luls"> WHAT THE HECK </h5> 

代碼以上場所說在getElementsByName( 'EngineeringAreas')的對象[0]是零。很顯然,在它下面,它不是空...我的getElementsByName('string')[0] .value與元素的值混淆?或者它正在檢索一些其他的價值?在理想的情況下,我會在稍後添加其他元素,用「EngineeringAreas」標記它們,而不必混淆hide/show函數。

編輯:這是錯誤消息:

Unhandled exception at line 53, column 9 in http://localhost:57264/Home/Index 

0x800a138f - Microsoft JScript runtime error: Unable to get value of the property 'value': object is null or undefined 
+1

側面說明,'的onclick =「ShowContentEngineering( );'不'onclick =「javascript:ShowContentEngineering();' – j08691

+1

你試過這樣的瀏覽器?我在Mac上使用Firefox 41.0.1嘗試了它,並且它按預期工作(它警告未定義,但是這是因爲標題沒有值,但如果我將值更改爲id這兩個地方,我會得到luls)。 – blm

+2

應該顯示的警報框是什麼 - luls或是什麼? –

回答

4

在這裏你去...看來:

  1. onclick="javascript: < ---沒有必要的 - 只是參考的功能名稱
  2. ShowContentEngineering需要在窗口上下文中設置
  3. 您正在引用不允許值att的元素的「value」屬性ributes(H5)

我做了工作,而不是抓住的innerHTML的H5 代碼

<input type="radio" name="Area" value="Engineering" id="EngineeringCheck" onclick="ShowContentEngineering();" />Engineering 

<h5 name="EngineeringAreas"> WHAT THE HECK </h5> 
<script> 
    window.ShowContentEngineering = function() { 
     alert(document.getElementsByName('EngineeringAreas')[0].innerHTML) 
     document.getElementById('InformationBlock').style.display = 'block'; 
    } 
</script> 

的下面是一個工作小提琴:和.valuehttps://jsfiddle.net/mu970a8k/

+0

非常感謝! – Aserian

1

插入.attributes[1]之間.getElementsByName('EngineeringAreas')。 1指向名爲EngineeringAreas的<h5>元素中的第二個屬性,即value。在.attributes[1]之後應該放置.value應該在警告框中返回值文本「luls」。然後報警代碼應設置如下:

alert(document.getElementsByName('EngineeringAreas')[0].attributes[1].value); 

更多信息:http://www.w3schools.com/jsref/prop_attr_value.asp