簡體   English   中英

從所有刪除空格<li>標簽 ID

[英]Remove white spaces from all <li> tag ids

請幫助我從所有<li>標簽 ID 中刪除所有空格。 這些 id 是根據播客 RSS 提要的標題動態生成的。 如何轉換以下<li>標簽中的所有 id(帶空格):

<li id="The Purpose of Commitment"> ...some content... </li>
<li id="Take Your Seat"> ...some content... </li>
<li id="The Power of the Soil"> ...some content... </li>
<li id="Seasons of Silence"> ...some content... </li>

進入 ids(沒有空格)。 下面的輸出示例:

<li id="ThePurposeofCommitment"> ...some content... </li>
<li id="TakeYourSeat"> ...some content... </li>
<li id="ThePoweroftheSoil"> ...some content... </li>
<li id="SeasonsofSilence"> ...some content... </li>

我搜索了這個論壇,發現這里有類似的問題: 如何替換字符串中的所有空格和這里: 替換字符串中的所有空格 我不知道如何在<li>標簽上實現這一點。 我真的很感謝你的幫助。 謝謝

這些 ID 應該在創建它們時進行格式化,而不是之后。

您的問題不僅是空格...

您使用任意字符串作為 ID,這可能包括帶有特殊字符的單詞,例如: Let's Code → 您不希望 ID 為id="Let'sCode" ← 注意'

解決方案?

除了字母,數字或代替其他一切下划線(正則表達式令牌: \\W ) -帶下划線

 $("li[id]").prop('id', (i, id) => id.replace(/\\W/g, '_'));
 <ul> <li id="Let's Code"> WARNING! QUOTES! </li> <li id="The Purpose of Commitment"> ...some content... </li> </ul> <script src="//code.jquery.com/jquery-3.3.1.min.js"></script>

或者通過使用vanilla JS:

 document.querySelectorAll('li[id]').forEach(el => el.id = el.id.replace(/\\W/g, '_'));
 <ul> <li id="Let's Code"> WARNING! QUOTES! </li> <li id="The Purpose of Commitment"> ...some content... </li> </ul>

The ids are dynamically generated from the title of a podcast rss feeds <-- 您應該在此過程中刪除空格。


但是,如果你不得不事后除去它們,你可以用一個簡單的做,與純JavaScript split()join()的方法是這樣的:

let lists = document.querySelectorAll("#someUl li");
lists.forEach(list => list.id = list.id.split(" ").join(""));

檢查並運行以下代碼片段以獲得上述方法的實際示例:

 /* JavaScript */ let lists = document.querySelectorAll("#someUl li"); lists.forEach(list => list.id = list.id.split(" ").join(""));
 <!-- HTML --> <ul id="someUl"> <li id="The Purpose of Commitment"> ...some content... </li> <li id="Take Your Seat"> ...some content... </li> <li id="The Power of the Soil"> ...some content... </li> <li id="Seasons of Silence"> ...some content... </li> </ul>

您可以使用純 Javascript 和正則表達式來執行此操作,以將任意數量的空格替換為空:

document.querySelectorAll('li').forEach(li => {
  li.id = li.id.replace(/\s*/g, '');
});

這是一個示例,它也在轉換后打印 id:

 document.querySelectorAll('li').forEach(li => { li.id = li.id.replace(/\\s*/g, ''); }); console.log('ids:'); document.querySelectorAll('li').forEach(li => { console.log(li.id); });
 <li id="The Purpose of Commitment"> ...some content... </li> <li id="Take Your Seat"> ...some content... </li> <li id="The Power of the Soil"> ...some content... </li> <li id="Seasons of Silence"> ...some content... </li>

如果您引用父元素內部 html 並將其分配給 js 變量,則可以使用.replace()方法刪除空格並將其重新分配給父元素。

可能有更好的方法來做到這一點,因為我自己很新,但我會谷歌document.getElementbyid().innerhtml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM