Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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_Jquery - Fatal编程技术网

javascript数组到字符串的转换

javascript数组到字符串的转换,javascript,jquery,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#conten

我有一个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
});

您可以结合使用jQuery的每个函数和JavaScript的Array.Join函数来解决这个问题

演示:

我已经人工检索了一组jQuery对象来展示如何解决这个问题,但是这个概念在您的问题中是常见的

HTML

您可以阅读关于jQuery每个函数的更多信息

您可以阅读有关JavaScript的Array.Join函数的更多信息

====更新=====

好的,下面的代码已经过测试,只需打开一个控制台并粘贴它。它选择所有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)

我认为下面的代码对您很有帮助

String.prototype.replaceAll=函数标记,newToken,ignoreCase{ var_代币; var str=this+; var i=-1; 如果标记的类型===字符串{ 假若无知{ _token=token.toLowerCase; 虽然 i=str.toLowerCase.indexOf 令牌,i>=0?i+newToken。长度:0 !== -1 { str=str.substring 0,i+ 纽顿+ str.substring i+token.length; } }否则{ 返回此.split令牌。加入newToken; } } 返回str; }; 试一试{ var-arr=[]; arr.push'div.parts',div.editor',div.inside-1',div.container-2',div.inside-wrapper',divcontent',div.whitebgpan',div',div',divmaindiv',body',html'; var stringData=arr.toString; stringData=stringData.replaceAll; console.logstringData; }抓住{ 警惕 }
对不起,我看错了问题,是jQuery对象。让我来确定答案。你能更清楚地说明你想要的输出格式吗?用DOM元素构建字符串是没有意义的。你是想记录这些元素的文本内容,还是…?嗯,你昨天不是也问了这个问题吗?你已经删除了它,但这个问题看起来非常相似。是的@Jack,我在这个问题上得到了负面评价,所以我删除了,现在我用更具体的措辞再次发布。这只给了我最后一个值,我尝试了$。每个都没有成功
$.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
})
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)