如何用JavaScript实现HTML元素title属性内换行显示用户列表
解决HTML title属性中用户列表换行的问题
嘿,我来帮你搞定这个title换行的坑!你遇到的问题其实挺常见的,主要是两个小细节没处理对,咱们一步步来修复:
首先,补上代码里的小漏洞
你初始化favTitle的时候没给初始值,默认是undefined,这会导致title开头多出来个奇怪的undefined字样,先把它改成空字符串:
var favTitle = ""; // 这里一定要初始化!
然后,选对换行方式并正确设置title
直接拼接HTML字符串的时候,\n或者HTML实体 / 有时候会被浏览器忽略,更可靠的方式是先创建元素,再用jQuery的attr()方法单独设置title属性,这样JavaScript里的换行符能被正确识别。
推荐的实现代码:
var favTitle = ""; for(var j = 0; j < like_favs[1].length; j++) { // 用\r\n兼容更多主流浏览器(Chrome、Firefox、Edge都支持) favTitle += like_favs[1][j].username + "\r\n"; } // 先创建<i>元素,再设置title属性,比直接拼HTML更稳定 var favoriteIcon = $('<i>Favorite</i>'); favoriteIcon.attr('title', 'In favorite users : \r\n' + favTitle); $("#Item").append(favoriteIcon);
如果坚持用HTML字符串拼接的话:
那要把换行符换成HTML实体 ,并且注意在字符串里正确输出(避免被转义):
var favTitle = ""; for(var j = 0; j < like_favs[1].length; j++) { favTitle += like_favs[1][j].username + " "; } $("#Item").append('<i title="In favorite users : ' + favTitle + '">Favorite</i>');
为什么之前的方法没生效?
- 没初始化
favTitle导致开头的undefined可能干扰了换行识别; - 直接在HTML字符串里写
\n,浏览器会把它当成空格处理,而用attr()方法设置时,JavaScript的换行符会被解析为title里的换行; - 部分浏览器对单一的
支持不如\r\n好,后者的兼容性更广泛。
内容的提问来源于stack exchange,提问作者Anouar khaldi




