-1

文字列をオブジェクトに変換していますが、リンクが削除されています。URL/リンクを削除できないようにコードを修正してください。現在、これを削除しています

url("http://localhost/xyz.jpg")url("http

        var style = 'background-image:url("http://localhost/xyz.jpg");
                    font-size: 20px;font-weight: 300;padding: 20px 10px;';
        if (typeof style != 'undefined'){
            var att = style.slice(0,-1).split(';');
            var obj = {};
            for (var i = 0; i < att.length; i++) {
                var parts = att[i].split(':');
                obj[parts[0]] = parts[1].substring(1);
            }
            console.log( obj);
}

ご協力いただきありがとうございます。

4

3 に答える 3

2

の後に 2 つのチャンクのみを取得するようにする必要がありますsplit()

これの代わりに:

var parts = att[i].split(':');

これを行う:

var parts = att[i].split(':');
parts = [parts.shift(), parts.join(':')];

例:

> parts = 'background-image:url("http://localhost/xyz.jpg");'.split(':')
["background-image", "url("http", "//localhost/xyz.jpg");"]
> parts = [parts.shift(), parts.join(':')]
["background-image", "url("http://localhost/xyz.jpg");"]
于 2013-07-23T08:23:02.827 に答える
1

を置き換えることができます

var parts = att[i].split(':');

ライン

var parts = att[i].split(/:(?!\/)/);

:a が続かない s でのみ分割します/(否定先読みを使用)。

于 2013-07-23T08:28:52.433 に答える
1

試す

var style = 'background-image:url("http://localhost/xyz.jpg"); font-size: 20px;font-weight: 300;padding: 20px 10px;';
if (typeof style != 'undefined'){
    var att = style.split(';');
    var obj = {};
    for (var i = 0; i < att.length; i++) {
        if(att[i]){
            var parts = att[i].match(/^\s?([a-z-]+):(.*)/);
            obj[parts[1].replace(/^\s+|\s+$/, '')] = parts[2].replace(/^\s+|\s+$/, '');
        }
    }
    console.log( JSON.stringify(obj));
}

デモ:フィドル

于 2013-07-23T08:33:44.780 に答える