2012-03-23 24 views
-1

如何將JavaScript從ID更改爲類?我試圖自己做,但沒有運氣,這就是我最終的結果。原始代碼是顯示或隱藏一個元素並記住用戶的選擇。如何將ID更改爲Javascript中的類

HTML:

<div class="popup" style="display:none"> 
    <img src="image-url.jpg" alt="alt text" title="title text"> 
</div> 

JAVASCRIPT:

function setCookie (name, value, expires, path, domain, secure) { 
    document.cookie = name + "=" + escape(value) + 
    ((expires) ? "; expires=" + expires : "") + 
    ((path) ? "; path=" + path : "") + 
    ((domain) ? "; domain=" + domain : "") + 
    ((secure) ? "; secure" : ""); 
} 

function getCookie (name) { 

    var cookie = " " + document.cookie; 
    var search = " " + name + "="; 
    var setStr = null; 
    var offset = 0; 
    var end = 0; 

    if (cookie.length > 0) { 
     offset = cookie.indexOf(search); 

     if (offset != -1) { 
      offset += search.length; 
      end = cookie.indexOf(";", offset); 

      if (end == -1) { 
       end = cookie.length; 
      } 

      setStr = unescape(cookie.substring(offset, end)); 
     } 
    } 

    if (setStr == 'false') { 
     setStr = false; 
    } 

    if (setStr == 'true') { 
     setStr = true; 
    } 

    if (setStr == 'null') { 
     setStr = null; 
    } 

    return(setStr); 
} 

function hidePopup() { 
    setCookie('popup_state', false); 
    document.getElementsByClassName('popup').style.display = 'none'; 
} 

function showPopup() { 
    setCookie('popup_state', null); 
    document.getElementsByClassName('popup').style.display = 'block'; 
} 

function checkPopup() { 
    if (getCookie('popup_state') == null) { 
     // if popup was not closed 
     document.getElementsByClassName('popup').style.display = 'block'; 
    } 
} 

回答

0

document.getElementsByClassName給你回的NodeList。並且NodeList沒有style屬性,這個屬性很有用...它擁有的全部內容是length以及列表中每個節點的索引。

爲了設置找到的每個popup的樣式,您應該遍歷NodeList。例如:

function showPopups() { 
    setCookie('popup_state', null); 
    var popups = document.getElementsByClassName('popup'); 
    for (var i = popups.length - 1; i >= 0; --i) { 
     popups[i].style.display = ''; 
    } 
} 

當然要隱藏起來,你會設置displaynone代替。

如果你知道你只有一個元素可以改變,(1)你爲什麼不使用ID? :)但(2)你可以說document.getElementsByClassName('popup')[0]訪問一個元素。請注意,儘管...如果你有多個,你只會改變第一個。

+0

我對JavaScript很陌生,你能簡單地粘貼新代碼嗎?謝謝。 – 2012-03-23 02:55:04

+0

我已經爲其中一個功能添加了一個示例。 (注意,我稍微改了一個名字,因爲我們可能做的不止一個)。對於其他功能,改變將大致相同。 – cHao 2012-03-23 03:02:28

+0

要顯示元素,請不要將其* display *設置爲「block」,將其設置爲「」(空字符串),以便該函數將正確顯示具有任何類型的默認或繼承顯示值的元素。 – RobG 2012-03-23 05:39:39