我在JS中的字符串连接不起作用

时间:2014-07-23 12:34:39

标签: javascript string-concatenation

我正在尝试连接两个字符串,但它没有做任何事情,并且控制台中没有错误。所以很可能我太盲目看不到问题...... 这里是我的代码来获取两个字符串:

$.get( "urlto/file.css", function(data) {
    cssOne = data;
    return cssOne;
}, "html");

$.get( "urlto/otherfile.css", function(data) {
    cssTwo = data;
    return cssTwo;
}, "html");

以下是连接方法:

function mergeCSS(){
    cssText = cssOne+" "+cssTwo;
return cssText;
}

变量都是全局的,所以我不认为这会导致任何问题。 正如我所说,也许我只是盲目......任何人都知道为什么它不起作用? THX

2 个答案:

答案 0 :(得分:1)

这是一个延迟的对象竞赛问题。使用$.when等待所有承诺得到解决。在你的情况下你不需要回调:

var p1 = $.get( "urlto/file.css", null, "html");
var p2 = $.get( "urlto/otherfile.css", null, "html");

$.when(p1,p2).done(function(r1,r2){
   cssText = r1 + r2;
});

答案 1 :(得分:0)

Jquery不是同步的。所以你没有得到理想的结果。您可以使用 Promises 同步JavaScript。

您可以这样做:

$.get( "urlto/file.css", function(data) {
    cssOne = data;
    $.get( "urlto/otherfile.css", function(data) {
       cssTwo = data;
       var newCSS = mergeCSS();//call function here
    }, "html");
}, "html");

function mergeCSS(){
    cssText = cssOne+" "+cssTwo;
    return cssText;
}

更新:如果您想在点击按钮上执行此操作,可以执行以下操作:

$("#buttonId").click(function(){
    $.get( "urlto/file.css", function(data) {
        cssOne = data;
        $.get( "urlto/otherfile.css", function(data) {
           cssTwo = data;
           var newCSS = mergeCSS(cssOne,cssTwo);//call function here
           alert(newCSS);
        }, "html");
    }, "html");
});

function mergeCSS(cssOne,cssTwo){
    cssText = cssOne+" "+cssTwo;
    return cssText;
}