<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DOMContentLoaded &#8211; 小豬日常</title>
	<atom:link href="https://piglife.tw/tag/domcontentloaded/feed/" rel="self" type="application/rss+xml" />
	<link>https://piglife.tw</link>
	<description>Hello World，一個紀錄生活與學習的地方</description>
	<lastBuildDate>Wed, 10 Dec 2025 10:21:42 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://piglife.tw/wp-content/uploads/2017/10/cropped-logo-1-32x32.png</url>
	<title>DOMContentLoaded &#8211; 小豬日常</title>
	<link>https://piglife.tw</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>使用 JavaScript 自動隱藏無目錄的 toc-block 區塊</title>
		<link>https://piglife.tw/technical-notes/javascript-hide-empty-toc-block/</link>
					<comments>https://piglife.tw/technical-notes/javascript-hide-empty-toc-block/#respond</comments>
		
		<dc:creator><![CDATA[小豬]]></dc:creator>
		<pubDate>Wed, 10 Dec 2025 10:21:42 +0000</pubDate>
				<category><![CDATA[技術筆記]]></category>
		<category><![CDATA[DOMContentLoaded]]></category>
		<category><![CDATA[DOM操作]]></category>
		<category><![CDATA[JavaScript]]></category>
		<guid isPermaLink="false">https://piglife.tw/technical-notes/javascript-hide-empty-toc-block/</guid>

					<description><![CDATA[本文介紹如何使用 JavaScript 在頁面載入後自動隱藏沒有目錄內容的 toc-block，提升...]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">前言</h2>
<p>在網頁中，我們常會使用目錄區塊（toc-block）來幫助使用者快速瀏覽內容，但有時候目錄內容（gs-toc）可能因為資料不完整或條件不符而不存在，這時候空白的目錄區塊反而會影響頁面美觀與使用體驗。本文示範如何用簡單的 JavaScript 程式碼，在頁面載入完成後自動檢查並隱藏沒有目錄內容的 toc-block，適合前端工程師或自學者優化動態內容顯示。</p>
<h2 class="wp-block-heading">為什麼要隱藏空的 toc-block</h2>
<p>空的目錄區塊會佔據頁面空間，造成視覺上的空洞，甚至誤導使用者以為頁面資料不完整。透過程式自動判斷並隱藏，可以提升頁面整潔度與使用者體驗，尤其在內容經常變動或由後端動態產生時更為重要。</p>
<h2 class="wp-block-heading">主要程式碼說明</h2>
<p>以下是核心程式碼片段：</p>
<pre><code class="lang-javascript language-javascript javascript">document.addEventListener(&quot;DOMContentLoaded&quot;, function() {
  const tocBlocks = document.querySelectorAll(&quot;.toc-block&quot;);

  tocBlocks.forEach(block =&gt; {
    const hasToc = block.querySelector(&quot;.gs-toc&quot;);
    if (!hasToc) {
      block.style.display = &quot;none&quot;;
    }
  });
});</code></pre>
<ul>
<li>使用 <code>DOMContentLoaded</code> 事件確保 DOM 元素已經載入完畢，避免查詢不到元素。</li>
<li>利用 <code>document.querySelectorAll</code> 選取所有 <code>.toc-block</code> 元素，方便批次處理。</li>
<li>針對每個 toc-block，使用 <code>querySelector</code> 檢查是否含有 <code>.gs-toc</code> 子元素。</li>
<li>若找不到 <code>.gs-toc</code>，代表此目錄區塊沒有內容，將其 <code>display</code> 設為 <code>none</code>，達到隱藏效果。</li>
</ul>
<h2 class="wp-block-heading">實務應用與優化方向</h2>
<ul>
<li>此方法適用於靜態或動態產生的目錄區塊，確保頁面不會顯示空白區塊。</li>
<li>若目錄內容是透過 AJAX 載入，需將檢查邏輯放在資料載入完成後執行。</li>
<li>可搭配 CSS 動畫效果，讓隱藏過程更為平滑。</li>
<li>若頁面中 toc-block 數量龐大，考慮使用更有效率的 DOM 操作或節流機制。</li>
</ul>
<h2 class="wp-block-heading">常見問題與注意事項</h2>
<ul>
<li>確認 <code>.gs-toc</code> 是目錄內容的正確 class 名稱，避免誤判。</li>
<li>若頁面中有多層目錄結構，需調整選擇器以符合需求。</li>
<li>使用 <code>display: none</code> 會完全移除元素佔用空間，若想保留佔位可改用其他 CSS 屬性。</li>
</ul>
<h2 class="wp-block-heading">完整程式碼</h2>
<pre><code class="lang-javascript language-javascript javascript">document.addEventListener(&quot;DOMContentLoaded&quot;, function() {
  // 取得所有 toc-block
  const tocBlocks = document.querySelectorAll(&quot;.toc-block&quot;);

  tocBlocks.forEach(block =&gt; {
    // 檢查這個 toc-block 底下是否有 gs-toc
    const hasToc = block.querySelector(&quot;.gs-toc&quot;);

    // 如果沒有找到，則隱藏整個區塊
    if (!hasToc) {
      block.style.display = &quot;none&quot;;
    }
  });
});</code></pre>]]></content:encoded>
					
					<wfw:commentRss>https://piglife.tw/technical-notes/javascript-hide-empty-toc-block/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
