我试图突出显示(更改背景颜色)鼠标悬停在其上的角色。
我怎么能用JavaScript做到这一点?
它应该生成与此类似的代码
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea takimata sanctus <span id='highlight'>e</span> Lorem ipsum dolor sit amet.</p>
答案 0 :(得分:7)
除非你先将整个字符串分成<span>
,否则找到已经悬停的字符是很棘手的。
HTML:
<p id="source">This is an example text.</p>
页面中的JS:
var i, tx, html, node;
node = document.getElementById("source");
tx = node.innerHTML;
html = "";
for (i = 0; i < tx.length; i++)
{
html += "<span>" + tx.charAt(i) + "</span>";
}
node.innerHTML = html;
接下来,在CSS中定义:
p#source span:hover
{
background-color: red;
}
以下是完整的工作示例页面:
<html>
<head>
<style>
p#source span:hover
{
background-color: red;
}
</style>
<script>
window.onload = function () {
var i, tx, html, node;
node = document.getElementById("source");
tx = node.innerHTML;
html = "";
for (i = 0; i < tx.length; i++)
{
html += "<span>" + tx.charAt(i) + "</span>";
}
node.innerHTML = html;
};
</script>
</head>
<body>
<p id="source">This is an example text.</p>
</body>
</html>
答案 1 :(得分:3)
您可以将段落拆分为字符。然后将每个字符映射到包含该字符的范围,然后将这些元素附加到清空的段落中。为每个范围提供一个CSS :hover
块:
<强>的jQuery 强>
$cont = $('p');
parts = $.map($cont.text().split(''), function(v){
return $('<span />', {text:v});
});
$cont.empty().append(parts);
<强> CSS 强>
p span:hover{background:#F00}
如果你想省略空格,请使用if语句测试trim
之后的值的长度:
$cont = $('p');
parts = $.map($('p').text().split(''), function(v){
return $.trim(v).length ? $('<span />', {text:v}) : ' ';
});
$cont.empty().append(parts);
答案 2 :(得分:1)
也要把我的解决方案扔进戒指。 :)它还涉及为每个字符包装<span>
标签(但是,只有非空白字符......没有必要将不可见的字符变成不同的颜色;)):( / p>
<强> jQuery的:强>
<script type="text/javascript">
$(document).ready(function() {
var $higlightSection = $("p");
$higlightSection.html($higlightSection.text().replace(/(\S)/g, "<span>$1</span>"));
$higlightSection.find("span").on("hover", function() {
$(this).toggleClass("highlight");
});
});
</script>
<强> CSS:强>
<style>
p {cursor: default;}
.highlight {color: red;}
</style>
编辑:我更新了解决方案中的代码,以匹配您提供的示例HTML。