javascript数组到字符串的转换
我有一个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
[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)