1

我试图创建一个包含撇号/单引号的字符串的TextNode。但它总是失败。这是我的示例代码:

var theText= "John's car";
var str = "var par= document.createElement('p');";
str += "par.style.textAlign='left';";
str += "var fnt= document.createElement('font');";
str += "var txt = document.createTextNode('" + theText  + "');";
str += "fnt.appendChild(txt);";
str += "par.appendChild(fnt);";
str += myDiv + ".appendChild(par);";
eval(str);
4

4 回答 4

3

呃……你到底为什么要那样做?

var theText= "John's car";
var par= document.createElement('p');
par.style.textAlign='left';
par.appendChild(document.createTextNode(theText));
myDiv.appendChild(par);
于 2013-06-18T03:51:26.910 回答
0

无论您'在字符串中的任何位置,都将其替换为 a \',一切都应该正常工作。例如,您的第一行应该从此更改:

var theText= "John's car";

对此:

var theText= "John\'s car";
于 2013-06-18T03:51:31.860 回答
0

如果你想维护 John 的车中的 ',它就像 John\'s car
或 ('p') 一样简单 (\'p\')

于 2013-06-18T03:51:54.940 回答
0

我认为你应该使用函数而不是eval。这样可以解决很多问题:

function addNode(myText, myDiv) {
  par= document.createElement('p');
  par.style.textAlign='left';
  fnt= document.createElement('font'); // font is not supported in HTML 5. Use CSS styles instead.
  txt = document.createTextNode(myText);
  fnt.appendChild(txt);
  par.appendChild(fnt);
  myDiv.appendChild(par);
}

addNode ("John's car", targetDiv);
于 2013-06-18T03:56:34.073 回答