Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的特殊字符未在网站上正确显示_Javascript_Character Encoding_Special Characters_Diacritics - Fatal编程技术网

JavaScript中的特殊字符未在网站上正确显示

JavaScript中的特殊字符未在网站上正确显示,javascript,character-encoding,special-characters,diacritics,Javascript,Character Encoding,Special Characters,Diacritics,当我从法语短语(onload函数)转到英语短语(onmousedown函数)再回到法语短语(onmousedup函数)时,IE和Chrome浏览器无法正确显示法语短语。当我在鼠标上松开某个特定短语时,它会回到法语,但ôandé的特殊字符(即ô;和é;)不会从数字代码变为ôandé。有人能告诉我为什么会这样做,以及我如何修复它吗 以下是我的JavaScript代码: /* Function List: eventSource(e) Returns t

当我从法语短语(onload函数)转到英语短语(onmousedown函数)再回到法语短语(onmousedup函数)时,IE和Chrome浏览器无法正确显示法语短语。当我在鼠标上松开某个特定短语时,它会回到法语,但ôandé的特殊字符(即
ô;
é;
)不会从数字代码变为ôandé。有人能告诉我为什么会这样做,以及我如何修复它吗

以下是我的JavaScript代码:

 /* 
   Function List: 
   eventSource(e) 
      Returns the source of an event in either event model 

   swapFE(phrase, pnum) 
      Changes a French phrase to the English version of that phrase. 

   swapEF(phrase, pnum) 
      Changes an English phrase ot the Frech version of that phrase. 

   setUpTranslation() 
      Insert the current week's french phrases into document and set up 
      event handlers for the phrases. 
*/ 

//Returns the source of an event in either event model 
function eventSource(e) { 
   var IE = document.attachEvent ? true:false; 
   var DOM = document.addEventListener ? true: false; 
   if (IE) return event.srcElement; 
   else if (DOM) return e.currentTarget; 
} 
//I added the function below to try and make it cross-browser compatible but it did not work....help! 
//function applysetUpTranslation(phrases[i],"click",swapFE(e),false) { 
//if (IE) phrases[i].attachEvent("on"+onmousedown, swapFE(e)); 
//else if (DOM) phrases[i].addEventListener(click,swapFE(e),true); 
//} 


function setUpTranslation() { 
   var IE = document.attachEvent ? true:false; 
   var DOM = document.addEventListener ? true: false; 
   var phrasesContainer = document.getElementById("phrases"); 
   var phrases= phrasesContainer.getElementsByTagName("p"); 

   for (i = 0; i<phrases.length; i++) { 
      phrases[i].number = i; 
      phrases[i].childNodes[1].innerHTML = french[i]; 
      phrases[i].childNodes[1].id = i; 

//childNodes[1] is the second span in the <p> array 
    if (IE) {
        phrases[i].childNodes[1].onmousedown = function() { swapFE(event); }; 
    } else {
        phrases[i].childNodes[1].onmousedown = swapFE; 
    }

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

  } 

} 

//this function changes the French phrase to an English phrase. 
function swapFE(e) { 
       var phrase = eventSource(e); 
       //phrase.innerText = english[phrase.id]; 
       var parent = phrase.parentNode; 
       //childNodes[0] is the number of the phrase +1  
       var idnum = parent.childNodes[0]; 
       //parseInt takes a textstring and extracts it to make a number. Then you will subtract 1 from the number. 
       var phrasenum = parseInt(idnum.innerHTML)-1; 
       phrase.innerText = english[phrasenum]; 
       parent.childNodes[1].style.fontStyle= "normal"; 
       parent.childNodes[1].style.color = "rgb(155, 102, 102)"; 
  } 


function swapEF(e) { 
        var phrase = eventSource(e);
       //var phrase = e.srcElement;  
       //phrase.innerText = english[phrase.id]; 
       var parent = phrase.parentNode; 
       var idnum = parent.childNodes[0]; 
       var phrasenum = parseInt(idnum.innerHTML)-1; 
       phrase.innerText = french[phrasenum]; 
       parent.childNodes[1].style.fontStyle= "italic"; 
       parent.childNodes[1].style.color= "black"; 
} 

非常感谢您的帮助。

我认为您需要使用
innerHTML
来解释特殊字符:

phrase.innerHTML = french[phrasenum]; 

我认为需要使用
innerHTML
来解释特殊字符:

phrase.innerHTML = french[phrasenum]; 

如果您的HTML/Javascript代码文件是使用Unicode创建的,那么您应该能够在Javascript和HTML中使用andé字符,而不会出现任何问题。

如果您的HTML/Javascript代码文件是使用Unicode创建的,您应该能够毫无问题地在Javascript和HTML中使用andé字符。

@Pekka-谢谢。我写了很多东西,但是我有innerText而不是innerHTML。一个小小的单词能带来多大的不同。我要看看有什么不同。再次感谢@艾希礼:没问题。不同之处在于,对于
innerText
,每个字符都按原样解释,包括
&
#
等等。我可以写
Hello
,结果就是这样
innerHTML
实际上将字符解释为HTML,因此结果将是经过解析的Hello。感谢您解释这一差异。这很有道理。谢谢@佩卡-谢谢你。我写了很多东西,但是我有innerText而不是innerHTML。一个小小的单词能带来多大的不同。我要看看有什么不同。再次感谢@艾希礼:没问题。不同之处在于,对于
innerText
,每个字符都按原样解释,包括
&
#
等等。我可以写
Hello
,结果就是这样
innerHTML
实际上将字符解释为HTML,因此结果将是经过解析的Hello。感谢您解释这一差异。这很有道理。谢谢