2015-12-02 50 views
0

所以我試圖讓我的網站上找到一定的文字和使用此代碼與<img>標籤取代......用HTML代替文字不工作?

function Emote() { 
    var stringg = document.getElementsByClassName("Post").innerHTML; 
    var resolutionn = stringg.replace("xD", "<img src='Icons/xD.gif' width='100px' height='100px' />") 
    document.getElementsByClassName("demo").innerHTML = resolutionn; 
} 
Emote(); 

當我與螢火蟲它輸出該調試...

enter image description here

回答

1

document.getElementsByClassName("Post").innerHTML的返回值是undefined

這是因爲document.getElementsByClassName正在重排一個數組,而不是單個元素。

使用document.getElementsByClassName("Post")[0].innerHTML訪問第一:

<script> 
    function Emote() { 
     var stringg = document.getElementsByClassName("Post")[0].innerHTML; 
     var resolutionn = stringg.replace("xD", "<img src='Icons/xD.gif' width='100px' height='100px' />") 
     document.getElementsByClassName("demo").innerHTML = resolutionn; 
    } 

    window.addEventListener("load", Emote); 
    // or window.onload = Emote(); 
</script> 
+0

我認爲這會工作的完整解決方案,但現在給了我這個輸出... https://imgur.com/H6TWCtE – insanewolfhd

+0

所以這告訴你,在你的文檔中沒有找到這個className的元素。考慮它是區分大小寫的,也許你使用「post」而不是「Post」? – CoderPi

+0

不,我的html是p class =「Post」,我的CSS與.Post {}一起工作,所以我不明白爲什麼這不起作用o.o. – insanewolfhd

3

getElementsByClassName返回元件的陣列,而不是單一的元件的功能。數組不具有屬性innerHTML,因此這將是未定義的。

如果要將此功能應用到匹配類的第一個元素,使用方法:

document.getElementsByClassName("Post")[0].innerHTML 

代替。

+0

這不是球員 – CoderPi