You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何用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实体&#10;,并且注意在字符串里正确输出(避免被转义):

var favTitle = "";
for(var j = 0; j < like_favs[1].length; j++) {
  favTitle += like_favs[1][j].username + "&#10;";
}

$("#Item").append('<i title="In favorite users : &#10;' + favTitle + '">Favorite</i>');

为什么之前的方法没生效?

  • 没初始化favTitle导致开头的undefined可能干扰了换行识别;
  • 直接在HTML字符串里写\n,浏览器会把它当成空格处理,而用attr()方法设置时,JavaScript的换行符会被解析为title里的换行;
  • 部分浏览器对单一的&#10;支持不如\r\n好,后者的兼容性更广泛。

内容的提问来源于stack exchange,提问作者Anouar khaldi

火山引擎 最新活动