2011-12-14 56 views
2

這裏的JavaScript代碼,你可以找到任何地方,當你想隱藏/顯示元素:如何隱藏然後恢復到初始狀態(=並非總是「阻止」)?

function sh(_id, _val) { 
    if (document.getElementById) { 
     document.getElementById(_id).style.display = _val; 
    } 
    else { 
     if (document.layers) { 
      document._id.display = _val; 
     } 
     else { 
      document.all._id.style.display = _val; 
     } 
    } 
} 
function hide(_id) { 
    sh(_id, 'none'); 
} 
function show(_id) { 
    sh(_id, 'block'); 
} 

的問題是「秀」的功能:它迫使「block」。如果我使用一個表tr的和td的,當我想顯示它們,我不他們顯示爲‘block’,而是要恢復到初始狀態

我該怎麼辦?

你會怎麼辦?

+0

如果你想要默認的`display`值,你可以給它分配一個空字符串。例如,如果你想通過CSS分配一個,你必須存儲它(例如在`id - > display` map)。 – 2011-12-14 15:22:41

+0

@FelixKling你是對的!請發表您的評論作爲答案我會檢查它;) – 2011-12-14 15:25:12

+0

完成:)........ – 2011-12-14 15:26:11

回答

6

如果你想恢復自己默認display值,可以爲空字符串分配給它:如果你想在一個通過CSS例如分配

element.style.display = ''; 

,你必須存儲在某個地方,例如在id -> display地圖或data-屬性。

1

最簡單的方法是使用jQuery和.show()http://api.jquery.com/show/

第二最簡單的方法是將包中的表一個div。

如果不是我想嘗試儲存顯示的初始值的地方(如HTML5的一個「數據 - 」屬性)如果不是在其他一些隱藏的元素

0

如果你的運動的關鍵是瞭解DOM,那麼你可能會忽略這個答案。但如果重點是要獲得一些用戶界面的工作,那麼:

我的建議是使用jQuery。如果你沒有,你會表現出完全消失的代碼,你會隱藏/像這樣的演出內容:

$('#' + id).hide() 
$('#' + id).show() 

如果你想堅持低水平DOM API,那麼你就必須節省掉style.display的先前值(塊或其他),以便您稍後可以恢復它。你可以做到這一點。但是,如果有人已經編寫了能夠實現這種功能的代碼,並且免費贈送它,那麼您將不得不編寫這樣的代碼,考慮各種情況。

0
var previousDisplay = {}; 
function sh(_id, _val) { 
    if (document.getElementById) { 
     document.getElementById(_id).style.display = _val; 
    } 
    else { 

     if (document.layers) { 
if(!previousDisplay[_id]){ 
      previousDisplay[_id] = document._id.display; 
     } 
      document._id.display = _val; 
     } 
     else { 
if(!previousDisplay[_id]){ 
      previousDisplay[_id] = document.all._id.style.display; 
     } 
      document.all._id.style.display = _val; 
     } 
    } 
} 
function hide(_id) { 
    sh(_id, 'none'); 
} 
function show(_id) { 
    var style = previousDisplay[_id]; 
    if(!style){ 
    style = 'block'; 
    } 
    sh(_id, style); 
} 
相關問題