2017-05-27 56 views
0

我正在使用此代码在Blogger中使用JavaScript创建按字母顺序排列的无序列表。这适用于CodePen和JSFiddle,但是当我在Blogger中使用它时,保存时出现此错误:Error parsing XML, line 1007, column 3: The element type "li" must be terminated by the matching end-tag "".。它是指这条线:$this.before('<li class="splitter">' + firstLetter);。如何去解决这个问题?如何修复Blogger中JavaScript中的匹配结束标记错误?

var list = $('ul'), 
 
    items = $('li', list); 
 

 
// sort the list 
 
var sortedItems = items.get().sort(function(a, b) { 
 
    var aText = $.trim($(a).text().toUpperCase()), 
 
     bText = $.trim($(b).text().toUpperCase()); 
 
    
 
    return aText.localeCompare(bText); 
 
}); 
 

 
list.append(sortedItems); 
 

 
// create the titles 
 
var lastLetter = ''; 
 
list.find('li').each(function() { 
 
    var $this = $(this), 
 
     text = $.trim($this.text()), 
 
     firstLetter = text[0]; 
 

 
    if (firstLetter != lastLetter) { 
 
    $this.before('<li class="splitter">' + firstLetter); 
 
    lastLetter = firstLetter; 
 
    } 
 
});
.splitter { 
 
    border-top: 1px solid; 
 
    font-size: 1.25em; 
 
    list-style: none; 
 
    padding-top: 10px; 
 
    text-transform: uppercase; 
 
    padding-bottom: 10px; 
 
    margin-top: 10px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul> 
 
    <li><a href="#/"> john-doe/</a></li> 
 
    <li><a href="#/"> jane-doe/</a></li> 
 
    <li><a href="#/"> glen-doe/</a></li> 
 
    <li><a href="#/"> daniel-doe/</a></li> 
 
    <li><a href="#/"> matthew-doe/</a></li> 
 
</ul>

回答

0

将Javascript代码与CDATA标签,以防止它解释Blogger的XML解析器。

//<![CDATA[ 

var list = $('ul'), 
    items = $('li', list); 

// sort the list 
var sortedItems = items.get().sort(function(a, b) { 
    var aText = $.trim($(a).text().toUpperCase()), 
     bText = $.trim($(b).text().toUpperCase()); 

    return aText.localeCompare(bText); 
}); 

list.append(sortedItems); 

// create the titles 
var lastLetter = ''; 
list.find('li').each(function() { 
    var $this = $(this), 
     text = $.trim($this.text()), 
     firstLetter = text[0]; 

    if (firstLetter != lastLetter) { 
    $this.before('<li class="splitter">' + firstLetter); 
    lastLetter = firstLetter; 
    } 
}); 

//]]> 
+0

这对错误有帮助,所以这很好。但是,预期的效果仍然不适用。我只得到一个项目列表。这个脚本不能在博客中工作,或者我做错了什么。你认为你可以尝试在测试博客上复制它吗? – Aric

+0

排序后你想做什么?告诉我所需的结果。 – Bassam

相关问题