这对某些人来说可能是显而易见的。我想在特定情况下在屏幕上放置一个文本框,我正在使用以下代码:
document.getElementById('tbDetails').innerHTML = '<textarea name="taComments" style="height:40px;width:333px" class="f1 greytext" onblur="sb_textarea_onblur(this, \'Check Out Rhapsody Tours\'s Video:\')" onfocus="sb_textarea_onfocus(this, \'Check Out Rhapsody Tours\'s Video:\')">Check Out Rhapsody Tours's Video:</textarea>';
正如您所看到的那样,文本中有一个撇号“Check Out Rhapsody Tours的视频:”,这会导致错误。文本是在经典的asp中动态创建的,因此无法确定将显示哪些信息。
其他可能有用的代码:
function sb_textarea_onfocus(txt,defaultText)
{
if(txt&&txt.value == defaultText)
{
txt.value = '';
txt.className = 'f1';
}
}
function sb_textarea_onblur(txt,defaultText)
{
if(txt&&txt.value == '')
{
txt.value = defaultText;
txt.className = 'f1 greytext';
}
}
我只需要一种方法来纠正javascript以允许撇号......任何想法..
非常感谢, 保罗
答案 0 :(得分:3)
你在
中错过了一个撇号查看Rhapsody Tours的视频:
在要转义的字符串内 - 转义 - &gt; \\\'
三个反斜杠,然后是撇号。
答案 1 :(得分:0)
通过在它们前面放一个反斜杠来逃避所有引号和双引号:
text.replace(/'/g, "\\'").replace(/"/g, '\\"')
E.g。
"foo's bar is \"baz\"".replace(/'/g, "\\'").replace(/"/g, '\\"')
收益率
foo\'s bar is \"baz\"
编辑:刚刚意识到这一点我认为你是以某种方式动态获取你的内容。如果你只是在那里推了一个硬编码的字符串,那么上面的答案就是:只要逃避备用引用,就足够了。
答案 2 :(得分:-1)
document.getElementById('tbDetails').innerHTML = '<textarea name="taComments" style="height:40px;width:333px" class="f1 greytext" onblur="sb_textarea_onblur(this, \'Check Out Rhapsody Tours\'s Video:\')" onfocus="sb_textarea_onfocus(this, \'Check Out Rhapsody Tours\'s Video:\')">Check Out Rhapsody Tours\'s Video:</textarea>';
在此代码中,您可以在撇号之前看到反斜杠,将其转换为字符串的一部分。这个问题是由这个撇号引起的,因为你的Check Out Rhapsody Tours'
使浏览器认为字符串已经结束,除非你替换'with \'。