新行没有出现在我想要它们生成的javascript中

时间:2010-02-09 17:32:07

标签: javascript

我将值粘贴到脚本中,我使用下面的函数来'内爆'数组

function implode() { var str='';
    for(item in globvars)
       str +='\n'+globvars[item]+';';
    return str+'\n';
}

样本用法:

globvars = ['Tom', 'Dick', 'Harry'];
output = '<script type = "text/javascript">\n'+implode(globvars)+'</script\>';

预期输出应为

    <script type = "text/javascript">
    Tom
    Dick
    Harry
    </script>

    Instead, I am getting something like this:

    <script type = "text/javascript">
    Tom Dick Harry </script>

什么......?

3 个答案:

答案 0 :(得分:1)

这对我来说很好。您是否将output输出到浏览器?浏览器会忽略换行符等,执行alert(output),您会看到换行符在那里。

此外,您当前初始化globvars是错误的,您无法构建这样的对象。使用[ ]构建数组:

globvars = ['Tom', 'Dick', 'Harry'];

答案 1 :(得分:1)

如果您将globvars作为数组(请参阅Tatu的回答),您可以使用内部.join代替implode

globvars = ['Tom', 'Dick', 'Harry'];
output = '<script type = "text/javascript">\n'+ globvars.join(";\n") +';\n</script\>';

答案 2 :(得分:0)

@Tatu Ulmanen

他正在渲染一个脚本标签。如果他正在做&lt; div&gt; ...&lt; / div&gt; \ ns将被剥离。

@OP

尝试发送

<script><![CDATA[
    x
    y
    z
]]></script>

ajax请求可能已经破坏了它并剥离了换行符。如果这是对常规请求的直接渲染,则浏览器不应删除\ ns。

如果这不起作用,请注明:

正在测试什么样的浏览器,做了什么样的请求,你想要完成什么,以便这些新行非常重要。