2011-02-24 30 views
0

你好,我遇到了函數setUpTranslation()的問題。 //此功能的目的是將法語短語放入文檔中,併爲mousedown和mouseup事件設置事件處理程序。功能不正常。請幫忙

//這是法國的短語和英文短語,我有做的地方到文檔的數組:

var english = new Array(); 
english[0] = "This hotel isn't far from the Eiffel Tower."; 
english[1] = "What time does the train arrive?"; 
english[2] = "We have been waiting for the bus for one half-hour."; 
english[3] = "This meal is delicious"; 
english[4] = "What day is she going to arrive?"; 
english[5] = "We have eleven minutes before the train leaves!"; 
english[6] = "Living in a foreign country is a good experience."; 
english[7] = "Excuse me! I'm late!"; 
english[8] = "Is this taxi free?"; 
english[9] = "Be careful when you go down the steps."; 


var french = new Array(); 
french[0] = "Cet hôtel n'est pas loin de la Tour Eiffel."; 
french[1] = "A quelle heure arrive le train?"; 
french[2] = "Nous attendons l'autobus depuis une demi-heure."; 
french[3] = "Ce repas est délicieux"; 
french[4] = "Quel jour va-t-elle arriver?"; 
french[5] = "Nous avons onze minutes avant le départ du train!"; 
french[6] = "Habiter dans un pays étranger est une bonne expérience."; 
french[7] = "Excusez-moi! Je suis en retard!"; 
french[8] = "Est-ce que ce taxi est libre?"; 
french[9] = "Faites attention quand vous descendez l'escalier."; 

//功能我有麻煩與

function setUpTranslation(){ 
var phrases = document.getElementByTagName("p"); 
    for (i =0; i<phrases.length; i++){ 
    phrases[i].number =i; 
    phrases[i].childNodes[1].innerHTML =french[i]; 

    phrases[i].childNodes[1].onmousedown =function(){ 
    swapFE(event); 

    phrases[i].childNodes[1].onmouseup =function(){ 
    swapEF(event); 
    }; 
    }; 
} 

//下面是另外兩個函數swapFE()和swapEF()。函數swapFE()的用途是交換法語短語作爲英文翻譯 //函數swapEF()的目的是交換法語短語的英文翻譯。

function swapFE(e){ 
var phrase =e.srcElement; 
var parent =phrase.parentNode; 
var idnum =parent.childNodes[0]; 
var phrasenum =parseInt(idnum.innerHTML)-1; 
    phrase.innerText =english[phrasenum]; 
} 

function swapEF(e){ 
var phrase =e.srcElement; 
var parent =phrase.parentNode; 
var idnum =parent.childNodes[0]; 
var phrasenum =parseInt(idnum.innerHTML)-1; 
    phrase.innerText =french[phrasenum]; 
} 

//不知道這些是否正確。提前致謝!

+0

你的問題到底是什麼? – romaintaz 2011-02-24 19:20:54

+1

它的一個有點令人困惑的問題。如果你讓你的問題和要求更清楚,這將是偉大的。例如,如果你有現有的代碼有問題是什麼問題等etc etc. – 2011-02-24 19:22:57

+2

「La plume de ma tante est sur la table」意思是「我的氣墊船充滿了鰻魚。」 HTH。 – 2011-02-24 19:25:12

回答

1

假設你的HTML看起來像這樣

<p><span>1</span><span></span></p> 
<p><span>2</span><span></span></p> 
... 
<p><span>10</span><span></span></p> 

然後,所有你需要做的是後swapFE(event);(分佈朗克先生)添加括號和替換getElementByTagNamegetElementsByTagName(你缺少一個' s'在那裏)。

還有一點需要注意:如果英語短語比法語短,那麼當onmousedown事件觸發時容器可能會縮小。如果這種縮小導致鼠標光標位於容器外部,則不會觸發後續的事件。當然,如果您使用的是塊元素(例如<div>)而不是我的假設<span>,那可能不是問題。無論如何,最好將事件監聽器添加到<p>標記中。

+0

最後它的工作!感謝您的幫助Plunkett先生。 – Suzie 2011-02-24 20:47:28