javascript中的动态内容

时间:2011-11-16 20:06:58

标签: javascript

这对某些人来说可能是显而易见的。我想在特定情况下在屏幕上放置一个文本框,我正在使用以下代码:

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以允许撇号......任何想法..

非常感谢, 保罗

3 个答案:

答案 0 :(得分:3)

  1. 你在

    中错过了一个撇号
      

    查看Rhapsody Tours的视频:

  2. 在要转义的字符串内 - 转义 - &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 \'。