2012-07-16 154 views
0
<body> 
    <input type="textbox" id="fname"></input> 
    <button type="button" onclick="javascript:show('select'); return false;">Click</button></br> 
    <input type="radio" id="select" style="display:none;"></input> 
</body> 

我寫的代碼似乎是合乎邏輯的,但在這種情況下,當我點擊按鈕,它似乎沒有奏效。任何任何一個可以告訴我在哪裏可以我已經錯了顯示使用JavaScript隱藏

在此先感謝。

<head> 
    <title>show and hide javascript</title> 
    <script type="text/javascript"> 
     function show(id) { 
      //alert("Its working"); 
      var myId = document.getElementById.id; 
      if (myId.style.display = 'none') { 
       myId.style.display = 'block'; 
      } else { 
       myId.style.display = 'none'; 
      } 

     } 
    </script> 
</head> 
+4

你'如果(myId.style.display = 'none''應該是'==' none'' – bokonic 2012-07-16 19:25:13

+0

我第一次見過'' – Musa 2012-07-16 19:27:37

+0

我做了='沒有'爲=='沒有',但仍然不工作 – 2012-07-16 19:27:52

回答

-1

改變這一行: 如果(myId.style.display = '無'){

到:

if(myId.style.display==='none'){ 
+0

nope它不工作的方式要麼... – 2012-07-16 19:33:00

+0

這不是隻有問題 – jfriend00 2012-07-16 19:37:18

1

我看到三個問題與你的函數:

1)將此行中的=修改爲==

if (myId.style.display == 'none') { 

2)更改此:

document.getElementById.id; 

這使其成爲一個實際的函數調用:

document.getElementById(id); 

3)使用一個跨瀏覽器getStyle()功能,使您的樣式值將包含CSS設置,而不僅僅是直接在對象上設置的值。直接從對象中讀取樣式屬性,僅檢索直接在對象上設置的樣式值,不檢索默認值。它不會反映通過CSS設置的內容。您可以實現跨瀏覽器功能從this article得到的樣式屬性包括哪些內容是通過這樣的CSS設置:

function getStyle(el, cssprop){ 
    if (el.currentStyle) //IE 
     return el.currentStyle[cssprop] 
    else if (document.defaultView && document.defaultView.getComputedStyle) //Firefox 
     return document.defaultView.getComputedStyle(el, "")[cssprop] 
    else //try and get inline style 
     return el.style[cssprop] 
} 

然後,您可以實現的功能是這樣的:同樣

function show(id) { 
     //alert("Its working"); 
     var myId = document.getElementById(id) 
     if (getStyle(myId, "display") === "none") { 
      myId.style.display = 'block'; 
     } else { 
      myId.style.display = 'none'; 
     } 
    } 

,因爲你的功能實際上是一個切換,而不僅僅是一個節目,我建議將它重命名爲toggle()。您可能還想知道,這隻會與塊元素正常工作。如果在內聯元素上嘗試它,它會隱藏它,但是當它顯示它時,它會將內聯元素變成塊元素。

+0

非常感謝你...我只是一個初學者在javascr ipt ...Ur非常感謝:D – 2012-07-16 19:38:08

0
document.getElementById(id) // without the dot before parens 

此代碼似乎工作得很好,我們沒有雙重==建議。直到更改(id)和刪除點纔會起作用。

<html><head><title>test</title></head> 
<body> 

<script type="text/javascript"> 
     function show(id){ 
      //alert("Its working"); 
      var myId=document.getElementById(id); 
      if(myId.style.display=='none'){ 
       myId.style.display='block'; 
      } 
      else{ 
       myId.style.display='none'; 
      } 

     } 
    </script> 

<h1>Test</h1> 

<input type="textbox" id="fname"></input> 
    <button type="button" onclick="javascript:show('select'); return false;">Click</button></br> 
    <input type="radio" id="select" style="display:none;" /> 

</body> 
</html> 
+0

它首次正常工作,因爲'='none''返回true,它切換到'block'。之後,它會一遍又一遍地將其更改爲「阻止」。 '=='是必要的。 – 2012-07-16 19:33:06

+0

我還刪除了收音機上的結束標記。 – 2012-07-16 19:33:10

+0

嘿,非常感謝你...這是我犯的錯誤..非常感謝你..appreciated你的幫助:D – 2012-07-16 19:34:11

0
function show(id) { 
     //alert("Its working"); 
     var myId = document.getElementById(id); 
     if (myId.style.display == 'none') { 
      myId.style.display = 'block'; 
     } else { 
      myId.style.display = 'none'; 
     } 

    } 

FTFY

+0

'var myId = document.getElementById;'是錯誤的。 – jfriend00 2012-07-16 19:36:44

+0

@ jfriend00大腦barf。謝謝! – 2012-07-16 19:39:22