javascript - 列表样式在索引 4000 之后停止显示罗马数字

标签 javascript jquery css list loops

我创建了一个从 0 到 10,000 的简单列表,其中每个 li 都有一个 upper-roman 样式类型、一个随机背景颜色以及一个子元素abbr 显示颜色的十六进制字符串。

运行程序时,列表样式在索引 4000 之后从 upper-roman 更改为 decimal

谁能向我解释一下这里发生了什么?

注意:运行测试需要几秒钟。

$(document).ready(readyHandler);

function readyHandler()
{
	var $list = $("#MyList");
	
	for (let i = 0; i < 10000; i++)
	{
		$list.append("<li><abbr title=\"\">Auto Insert " + i + "</abbr></li>");
	}	
	
	colors = [];
	
	for (let i = 0; i < $list.children().length; i++)
	{
		colors.push(getRandomColor());
	}
	
	$list.children().each(listItemsHandler);
}

function listItemsHandler(index, item)
{
	var $target = $(item);
	var color = colors[index];
	
	$target.css("background-color", color);
	$target.find("abbr").attr("title", color);
}

function getRandomColor()
{
	var color = "#";
	
	for (var i = 0; i < 3; i++)
	{
		var part = Math.round(Math.random() * 255).toString(16);
		
		color += (part.length > 1) ? part : "0" + part;
	}
	
	return color;
}
#MyList
{
	list-style-type: upper-roman;
	margin-left: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ol id = "MyList"></ol>

最佳答案

在 4000 处,罗马数字开始包含上划线,该上划线没有用于以纯文本显示的 ASCII 表示形式。例如,4000 是 IV顶部有一条线。因此,浏览器渲染器无法表示 char 中的数字。形式为 <li>子弹。

表示这一点的唯一方法是使用附加 css 属性 overline .

简而言之,无法将超过 3999 的数字表示为元素符号元素。

关于javascript - 列表样式在索引 4000 之后停止显示罗马数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37468298/

相关文章:

javascript - 无法获取&lt;script&gt;之间的内容?

html - 在输入组旁边添加内联内容并且不换行

javascript - 如何使用Javascript进行变换?

javascript - getElementsByClassName 与 getElementById 不同(支持浏览器)

javascript - Bootstrap slider - CSS 显示不正确

jquery - N秒内统一更新jQueryUI Progressbar

iphone - 纯CSS检测iPhone/iPad

jquery - 如何制作 3 个以网格列为中心的 Action 图像?

javascript - 从多维数组中删除对象

javascript - 返回数组中每个对象的 Id