javascript对象中的字符串连接
我肯定有一个简单的答案,但我找不到 我知道如何在JavaScript中连接普通字符串,但如何在对象中连接呢 当我阅读XML文件并创建链接列表的HTML时,我需要这个。每次通过循环时,我都想创建一个包含链接的新javascript对象中的字符串连接,javascript,string,Javascript,String,我肯定有一个简单的答案,但我找不到 我知道如何在JavaScript中连接普通字符串,但如何在对象中连接呢 当我阅读XML文件并创建链接列表的HTML时,我需要这个。每次通过循环时,我都想创建一个包含链接的新。如何获取字符串的当前值,然后在末尾附加新链接?阅读完XML后,我将把HTML附加到页面上 我试过: carParks.links = carParks.links + "<li><a href=\"#\">car park</a></li>"
。如何获取字符串的当前值,然后在末尾附加新链接?阅读完XML后,我将把HTML附加到页面上
我试过:
carParks.links = carParks.links + "<li><a href=\"#\">car park</a></li>";
carParks.links=carParks.links+“”;
没有成功
非常感谢您的帮助。如果您生成了大量链接,请尝试/w array.join()
var tmp=[];
for([在xml上迭代]){
tmp.push(“”);
}
停车场连接=tmp连接(“”);
比重复的字符串concat更快
或者,如果您创建了一个html文档片段,浏览器为您执行concat。。。当附加DocumentFragment时,只有ducument片段cildNodes附加到具体元素。布局只计算一次,不像每个元素的附加,而且您不必在执行时关心字符串
var docFrag = document.createDocumentFragment();
for ([iterate over xml]) {
var current = document.createElement('li');
current.innerHTML = "<a href=\"#\">car park</a>";
docFrag.appendChild(current);
}
theElementToAppendMyList.appendChild(docFrag);
var docFrag=document.createDocumentFragment();
for([在xml上迭代]){
var current=document.createElement('li');
current.innerHTML=“”;
docFrag.appendChild(当前);
}
要添加的元素和我的列表。添加子项(docFrag);
带有对象属性的字符串串联与其他任何东西都是一样的。从理论上讲,只要停车场.links
是一个可写属性,那里的代码就应该可以工作。使用+
或+=
运算符执行字符串串联时,除了将它们用作算术运算符外,操作数将转换为字符串。例如:
var carParks = {};
carParks.links = carParks.links + "Test";
// -> "undefinedTest", because carParks.links was undefined
如果收到错误消息,请检查
停车场是否已定义且是否为具有可写属性的JavaScript对象(例如,不属于外部接口的一部分)。如果没有错误,请确保carParks.links不是数字。如果这没有帮助,请多发布一些相关代码,我将再尝试一次。这是基本的字符串连接,但是根据您的性能考虑,您可能希望采用不同的方法来实现这一点;本质上,它可以归结为使用该语言提供的字符串连接运算符,或者数组连接。前者非常简单,但在较旧的浏览器上速度较慢,而后者则更快
在您的示例中,使用字符串连接非常好。另一种方法是使用+=
运算符:
carParks.links = carParks.links + "<li><a href=\"#\">car park</a></li>";
carParks.links=carParks.links+“”;
数组连接方法如下所示:
var buffer = [];
while(node != null) {
buffer.push("<li><a href=\"#\">car park</a></li>");
}
carParks.links = buffer.join('');
var buffer=[];
while(节点!=null){
buffer.push(“”);
}
carParks.links=buffer.join(“”);
数组连接方法产生的垃圾更少,但我看到它在具有大型(10000多个项目)列表的较新浏览器上运行得更慢。就字符串连接语法而言,您所拥有的一切都很好。你的问题可能在其他地方(例如停车场
对象本身,或调用代码等)。我认为你是对的。我刚刚用相同的代码制作了一个简化的测试脚本,它正在工作。问题一定在别的地方。谢谢。谢谢Andy,我现在意识到语法是正确的,但我后来在代码中覆盖了这个特殊属性。
var buffer = [];
while(node != null) {
buffer.push("<li><a href=\"#\">car park</a></li>");
}
carParks.links = buffer.join('');