使用Javascript将多行变量转换为单行变量
Convert multi-lined variable into a single lined variable using Javascript?
我有一个变量:
var remoteControlPage = '
<table>
<tr>
<td class="stats">sadfsadf</td>
</tr>
</table>
';
我想在Jquery .html
函数中使用它,如下所示:
$("div.devices div.devicePage").html(remoteControlPage);
问题是,除非新内容在一行中,否则html函数将无法工作。这在编写html时是不可取的。
所以我想知道是否有办法将var remoteControlPage
转换为单行变量?
感谢
这个问题不仅限于.html()
,相反,如果没有一些帮助,JS将不支持多行字符串。
有许多模板化解决方案可供您处理,但一个常见的纯JS解决方案是join
字符串数组:
var remoteControlPage = [
'<table>',
'<tr>',
'<td class="stats">sadfsadf</td>',
'</tr>',
'</table>'
].join('');
您不能定义这样的变量:
var remoteControlPage = '
<table>
<tr>
<td class="stats">sadfsadf</td>
</tr>
</table>
';
在任何情况下,您都可以有一个文本区域,由用户用文本填充
<table>
<tr>
<td class="stats">sadfsadf</td>
</tr>
</table>
然后你得到它:
var remoteControlPage = mytextarea.value;
但当你这样做时,文本会更改为
var remoteControlPage = "<table>'n <tr>'n <td class='"stats'">sadfsadf</td>'n </tr>'n</table>"
然后,如果你想删除换行符,你可以做
remoteControlPage = remoteControlPage.replace(/'s*'n's*/g,"")
但你不需要。如果你说用户将编写HTML,你可以使用<textarea>
。。。
<textarea id="txt">
<table>
<tr>
<td class="stats">Cell 1</td>
<td class="stats">Cell 2</td>
</tr>
</table>
</textarea>
一个按钮。。。
<button id="button">Click me!</button>
和一个输出HTML查看器:
<div id="output">Here will go the output</div>
然后你只需要
$('#button').click(function(){
$('#output').html($('#txt').val());
});
演示:http://jsfiddle.net/bYsTy/6/
在JS中,你必须像这样正确地连接这些字符串:
var remoteControlPage =
'<table>'
+'<tr>'
+'<td class="stats">sadfsadf</td>'
+'</tr>'
+'</table>';
您必须更换'n
remoteControlPage = remoteControlPage.replace(/'n/g, '');
console.log(remoteControlPage);
// output: "<table> <tbody><tr> <td class="stats">sadfsadf</td> </tr> </tbody></table>"
或者,如果您不需要空白,可以使用以下regex
将其删除。/'n|'s(?![^'s]*<'/td>)/g
解释:
's
:匹配空白|
:用于匹配'n
或's
[^'s]
:匹配除空白以外的所有内容<'/td>
:匹配您的td
的末尾*
:匹配前面的元素0次或更多次's(?![^'s]*<'/td>)
:仅当后面跟的不是某个空格时匹配空白,后面跟td
的末尾
因此您的代码如下:
remoteControlPage.replace(/'n|'s(?![^'s]+<'/td>)/g, '');
console.log(remoteControlPage);
// output: <table><tbody><tr><tdclass="stats">sadfsadf</td></tr></tbody></table>
注意:它不会删除td.stats
内部的空白。
演示
您提到html在本地存储中,所以不要使用JS变量,直接从存储中设置它。
$("div.devices div.devicePage").html(localStorage["bar"]);
相关文章:
- 将标量变量转换为javascript中包含变量的数组
- 使用Javascript将多行变量转换为单行变量
- 变量转换为另一个“未定义”的变量
- 如何在javascript中将String变量转换为int
- 提交时将JavaScript变量转换为PHP表单
- 在d3.js中将局部变量转换为全局变量
- 在php函数中将php变量转换为javascript变量
- AngularJS变量转换为html<对象>属性
- 正在将字符串变量转换为数组
- 将变量转换为 json 路径
- 将 MVC 4 Razor 变量转换为 JavaScript 数组
- 如何在 JavaScript 中将局部变量转换为全局变量
- 如何将 jstl/JSP 变量转换为 JavaScript 变量
- 如何将变量转换为对象
- 如何使用 Javascript 将变量转换为字符串
- 在将会话变量转换为 javascript 变量时丢失特殊字符
- 如何在函数内将未定义的变量转换为对象
- 在按键和鼠标单击后将函数变量转换为全局变量
- 如何在javascript中将整数变量转换为字符串
- Javascript变量转换为Applescript