javascript数组到字符串转换

时间:2014-11-18 06:38:30

标签: javascript jquery

我在javascript中有这个数组:

[div.parts, div.editor, div.inside-1, div.container-2, div.inside-wrapper, div#content, div.whitebgpan, div, div#maindiv, body, html]

如何将其转换为字符串,以便输出为:

div.parts div.editor div.inside-1 div.container-2 div.inside-wrapper div#content div.whitebgpan div div#maindiv body html

这是我的代码:

jQuery(document).on('click', function(e){
    var ClickedParents = jQuery(e.target).parents(); //Get all parents of clicked element
    var ClickedParents_array = jQuery.makeArray(ClickedParents); //Make array
    console.log(ClickedParents_array); //Show output in colsole
});

3 个答案:

答案 0 :(得分:0)

您可以结合使用jQuery each函数和JavaScript Array.Join函数来解决此问题。

DEMO http://jsfiddle.net/zay015ex/1/

我已经人工检索了一系列jQuery对象,以展示如何解决这个问题,但这个概念对你的问题很常见。

<强> HTML

<div id="parent">
    <div id="child1"></div>
    <div id="child2"></div>
    <div id="child3"></div>
    <div id="child4"></div>
    <div id="child5"></div>
</div>

<强>的JavaScript

var arrayOfObjects = $('#parent').children();
var ids = [];

$.each(arrayOfObjects, function(i, val)
   {
       ids.push(val.id);
   });

var idString = ids.join(' ');
  • 您可以阅读有关jQuery each函数here的更多信息。

  • 您可以阅读有关JavaScript Array.Join功能的更多信息 here

答案 1 :(得分:0)

=====更新=====

好的,测试了以下代码,只需打开控制台并粘贴即可。它选择所有div标签并转换为选择器字符串。

$.map($('div'),function toSelector(elem){
    var jqObj = $(elem)
    var tag = jqObj.prop('tagName').toLowerCase()
    var classes = jqObj.attr('class') ? '.' + jqObj.attr('class').split(' ').join('.') : ''
    var ids = jqObj.attr('id') ? '#' + jqObj.attr('id').split(' ').join('#'): ''
    return tag + classes + ids
})

===================

假设他们是jquery对象,你必须手动构建字符串。 例如,执行以下操作。 (未经测试)

function toSelector(jqObj){
  var tag = jqObj.prop('tagName').toLowerCase()
  var classes = jqObj.attr('class') ? '.' + jqObj.attr('class').split(' ').join('.') : ''
  var ids = jqObj.attr('id') ? '#' + jqObj.attr('id').split(' ').join('#'): ''
  return tag + classes + ids
}

array.map(toSelector)

答案 2 :(得分:0)

我认为以下代码对您有所帮助。

<script type="text/javascript">
            String.prototype.replaceAll =    function  ( token, newToken, ignoreCase ) {
                var _token;
                var str = this + "";
                var i = -1;
                if ( typeof token === "string" ) {

                    if ( ignoreCase ) {
                        _token = token.toLowerCase();
                        while( (
                            i = str.toLowerCase().indexOf(
                                token, i >= 0 ? i + newToken.length : 0
                                ) ) !== -1
                        ) {
                            str = str.substring( 0, i ) +
                            newToken +
                            str.substring( i + token.length );
                        }
                    } else {
                        return this.split( token ).join( newToken );
                    }
                }
                return str;
            };
            try{
                var arr = [];
                arr.push('div.parts', 'div.editor', 'div.inside-1', 'div.container-2', 'div.inside-wrapper', 'div#content', 'div.whitebgpan', 'div', 'div#maindiv', 'body', 'html');
                var stringData = arr.toString();                
                stringData = stringData.replaceAll(",", " ");
                console.log(stringData);
       
            }catch(e){
                alert(e)
            }
        </script>