2013-04-10 68 views
0

我有文字標籤這樣一個HTML頁面:解析自定義文本標籤的html頁面中JS

<div id="container"> 
[stag id="789"]some content 1[/stag] 
</div> 

<span id="somespan"> 
[stag vn="78988" id="532"]some content 2[/stag] 
</span> 

[stag id="891" vn="78988"]some content 3[/stag] 

我想用JS解析整個頁面代碼,並讓所有的「鹿」屬性和內容,並用生成的div在原地替換它們。

注意:這不是一個有效的標記,它是方括號內的, ,當js未加載時必須在頁面上顯示爲純文本,而在解析時爲div。

getElementsByTagName在這種情況下無法正常工作,因爲[stag]不是有效的html標記,它是純文本的網頁。

什麼是最好的方式來實現,以一種方式能夠動態地解析該標籤。

我認爲我尋求幫助創造: getElementsBySquereBracketsTagName

感謝配發對你的幫助

+0

_「我認爲我尋求幫助創造:getElementsBySquereBracketsTagName」 _ - 不是真的,因爲你自己說的,這只是普通的文本內容,所以它只是文本節點而不是DOM角度的_element_節點。 – CBroe 2013-04-10 14:34:30

回答

1

它可能不是有效的標記,因爲你將在一個跨度結束了資料覈實,但這裏一種方法來做到這一點。

由於HTML

<html> 
    <body> 
     <div id="container"> 
     [stag id="789"]some content 1[/stag] 
     </div> 

     <span id="somespan"> 
     [stag vn="78988" id="532"]some content 2[/stag] 
     </span> 

     [stag id="891" vn="78988"]some content 3[/stag] 
    </body> 
</html> 

的JavaScript

document.body.innerHTML = 
document.body.innerHTML.replace(/\[/gi,'<').replace(/\]/gi,'>').replace(/stag/gi,'div') 
+0

嗨,這是好的,但如果我用div替換所有的雄鹿,我怎麼能後來識別所有其他div中的雄鹿,而不添加任何標識屬性如:[stag class =「stag」id =「 324] content [/ stag] ..它會成爲一個div後,我可以告訴它是一個雄鹿,並獲得與鹿類的所有元素,但我不想包括類=「雄鹿」所有的時間......任何隱私?謝謝.. – itai 2013-04-10 20:00:52

+0

你的代碼是不正確的...所有的雄鹿,文件中的所有[,所有],被取代...不僅[stags] [/ stags] ,我的意思是'['']'必須保持']''['爲純文本,除非它們用於[單個]標記... – itai 2013-04-10 20:10:17

+0

hi @itai我不確定你是否可以幫助你。從真假標籤中檢測真正的標籤是相當困難的,但考慮到您的原始示例代碼有效 – Peter 2013-04-11 10:17:22