Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript对象中的字符串连接_Javascript_String - Fatal编程技术网

javascript对象中的字符串连接

javascript对象中的字符串连接,javascript,string,Javascript,String,我肯定有一个简单的答案,但我找不到 我知道如何在JavaScript中连接普通字符串,但如何在对象中连接呢 当我阅读XML文件并创建链接列表的HTML时,我需要这个。每次通过循环时,我都想创建一个包含链接的新。如何获取字符串的当前值,然后在末尾附加新链接?阅读完XML后,我将把HTML附加到页面上 我试过: carParks.links = carParks.links + "<li><a href=\"#\">car park</a></li>"

我肯定有一个简单的答案,但我找不到

我知道如何在JavaScript中连接普通字符串,但如何在对象中连接呢

当我阅读XML文件并创建链接列表的HTML时,我需要这个。每次通过循环时,我都想创建一个包含链接的新
  • 。如何获取字符串的当前值,然后在末尾附加新链接?阅读完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('');