首先,JavaScript 不允许多行字符串,所以马上你的document.write
将抛出语法错误。您至少有几种方法可以解决这个问题。您可以删除换行符,使整个字符串成为一行......
var lines = '<div id="jwplayer"><center>...</center></div>';
document.write(lines);
...但这往往不那么可读。或者你可以用反斜杠转义换行符......
var lines = '<div id="jwplayer">\
<center>\
...\
</center>\
</div>';
document.write(lines);
...这更具可读性,但可能有点脆弱——反斜杠后面的任何尾随空格都会破坏它而不明显。接下来,您可以一次一行连接字符串......
var lines = '<div id="jwplayer">';
lines += '<center>';
lines += '...';
lines += '</center>';
lines += '</div>';
document.write(lines);
...哪个Ithink 在一定程度上缓解了第一种方法的可读性问题和第二种方法的脆弱性问题。最后,您可以创建一个字符串数组并将它们连接起来......
var lines = [
'<div id="jwplayer">',
'<center>',
'...',
'</center>',
'</div>'].join(' ');
document.write(lines);
...它具有消除重复性的[完全主观]优势lines += ...
。无论如何,这绝不是一个详尽的方法列表,它主要归结为使用您最舒服的方法。
接下来,坦率地说,您的字符串是一个由相互冲突的单引号和双引号组成的巨大大杂烩。如果您需要在字符串中包含与用于括起字符串的相同类型的引号,那么您需要对它们进行转义:
var lines = "<div id=\"jwplayer\">";
lines += '<div id=\'mediaplayer\'></div>';
显然(?)您希望将转义保持在最低限度,并且由于您正在创建 html 字符串,因此您可能希望用单引号将它们括起来,并为属性使用双引号价值观。但同样,这取决于对您来说最有意义的风格。
最后,上述两个问题都是导致streamName
传递到函数中的参数不起作用,因为在到达该行之前很久就已经遇到了许多错误。如果你把字符串问题搞清楚,那么
lines += "'file': 'onSaveOk(" + streamName + ")'";
应该按照你想要的方式工作。
Note:我放弃了关于 a) 使用的强制性警告document.write()
b) 使用<center>
标签,但您应该花一些时间对这两个问题进行一些研究;我只想说 1998 打电话来说,“那很好,无论如何我都不想要那些回来”。