2014-07-14 60 views
0

在我的网站的一个功能中,div元素的内部HTML被更改为包含向右箭头。这个符号被包含在“myDiv”的innerHTML为➞使用javascript将特殊字符转换回HTML实体代码

在一个单独的功能,我想“myDiv”的innerHTML与➞

function myFunction() { 
//Many lines of code then 
    var myText = document.getElementById("myDiv").innerHTML; 
    alert(myText); 
    if (myText.match(/➞/g)) { //also tried with /➞/g 
     alert('Yep'); 
     myText = myText.replace(/➞/g, " to yield "); 
    } 
//Many more lines 
} 

匹配当我提醒会将myText作为函数(在if语句之前),警报输出包含一个实际的右箭头➞,而不是➞问题是,即使➞存在于代码中以首先产生“myDiv”的innerHTML(在单独的函数中) ,在myFunction() ➞似乎不匹配,因为alert('yep')不是c alled。

我抬起头,绝望地尝试decodeURIComponent(),但我非常确定这不起作用,它似乎没有。任何人都可以解决这个问题吗?谢谢

回答

1

然后根据实际的右箭头检查它。

function myFunction() { 
//Many lines of code then 
    var myText = document.getElementById("myDiv").innerHTML; 
    alert(myText); 
    if (myText.match(/➞/g)) { //also tried with /➞/g 
     alert('Yep'); 
     myText = myText.replace(/➞/g, " to yield "); 
    } 
//Many more lines 
} 
+0

不错......这工作完美。谢谢。所以我想这里的教训是包含非键盘字符的任何元素的innerHTML实际上包含非键盘字符,而不是该字符的HTML代码? –

+1

@TheOneandOnlyChemistryBlob:它不是非键盘字符;它是任何角色。但是,是的,除非有必要逃脱。 (你应该尽量避免使用'innerHTML',并尽可能使用实际的文本;它不具有那种不一致性。) – Ryan

+0

这个解决方案很有效,但我试图匹配→代表的不同右箭头(有多种不同方向箭头),这也匹配。我认为箭头是一个箭头,只要匹配innerHTML是关注的:) –

相关问题