2016-04-06 63 views
1

對不起,如果這是一個noob問題!用javascript更改文本並保留src

我使用腳本來使用此代碼翻譯我的頁面:

<script> 
     var translations= { 'en' : 
           {'title' : 'Title', 'textimg' : 'English text'}, 
          'fr' : 
           {'title' : 'Titre', 'textimg' : 'Texte français'} 
          }; 
     function doTranslate(language) { 
      for(id in translations[language]) { 
       document.getElementById(id).innerHTML = translations[language][id]; 
      } 
     } 
</script> 

而且這個網站:

<a href="javascript:doTranslate('fr')"><img src="img/Fr-Flag.png"></a> 
<a href="javascript:doTranslate('en')"><img src="img/UK-Flag.png"></a> 
<h2 id="title">Title</h2> 

,當我使用的圖像(小圖標),問題就來了:在文字改變,但src似乎不見了,所以當文字改變時,圖像不顯示:

<img id="textimg" src="img/fav-rond.png">English text</img> 

如何解決這個問題?

+0

您的預期產出是多少?像'English [x]''英文'是一些任意翻譯的文本,'[x]'是標誌圖像? – kazenorin

+0

我希望在改變後的文字旁邊有這樣的圖像,例如: 'image'英文文本 - >'image'法國德文 – Guillaume

+0

請參閱我的回答 – Pimmol

回答

2

請參閱此回答有關img標籤內內容:Div tag within img tag

但一個可能的解決方法是刪除從imgid並創建一個圍繞與ID文本的新元素。例如:

<img src="img/fav-rond.png" /> 
<span id="textimg">English text</span> 

而且演示:https://jsfiddle.net/7j2ckw0r/1/

+0

我已經試過這個,但圖像不在文本旁邊 – Guillaume

+0

讓它'span'或者使用一點CSS – Pimmol

+0

是啊!有用!非常感謝!! – Guillaume

0

這應該解決您的問題。

document.getElementById(id).setAttribute("id", translations[language][id]) 

您不應該使用innerHTML來解決此問題。

+0

我不相信OP想要更新'id' – Pimmol

+0

@SGS Venkatesh您的解決方案幫助我解決了另一個問題(href)! ;) – Guillaume

+1

@Guillaume很高興知道。 :) –

0

<img>標籤不允許內的任何信息,這是一個"Empty element"

如果裏面添加任何文字,也成爲一個無效的HTML文本。

你可以做的是增加一個alt屬性:

<img id="textimg" src="img/fav-rond.png" alt="English text"/> 
0

這是不可能的形象和訪問,與其後直接將文本添加到圖像標籤,而不是放置跨度元素。

<img src="img/fav-rond.png" /><span id="textimg">English text</span>