【问题标题】:Function not working properly. Please help功能无法正常工作。请帮忙
【发布时间】:2011-02-24 19:18:37
【问题描述】:

您好,我在使用 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];
}

//不确定这些是否正确。提前致谢!

【问题讨论】:

  • 你的问题到底是什么?
  • 这是一个有点令人困惑的问题。如果你让你的问题和要求更清楚,那就太好了。例如,如果你在使用现有代码时遇到问题,那是什么问题等等
  • “La plume de ma tante est sur la table”的意思是“我的气垫船里装满了鳗鱼”。 HTH。
  • 有一点,更严重的是,您的“onmousedown”处理程序有一个无与伦比的开放花括号。在调用 swapFE(event); 之后,您需要一个匹配的右大括号来结束函数。如果这是从您的代码中直接复制粘贴,我希望它甚至没有运行,因为该错误。
  • 如您在此处看到的一个注释:jsfiddle.net/EsUmS/1phrase.innerText 应该是phrase.innerHTML,否则重音的法语部分处理不当 ô

标签: javascript


【解决方案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); 之后添加大括号(Plunkett 先生的分数)并将getElementByTagName 替换为getElementsByTagName(您在其中缺少一个“s”)。

还有一点需要注意:如果英文短语比法语短语短,则容器可能会在onmousedown 事件触发时缩小。如果这种收缩导致鼠标光标定位在容器外,则不会触发后续的onmouseup 事件。当然,如果您使用块元素(例如&lt;div&gt;)而不是我假设的&lt;span&gt;,那可能不是问题。在任何情况下,最好将事件侦听器附加到 &lt;p&gt; 标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 2013-11-06
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多