我使用CSS counter和content属性生成标题和数字的编号:
img.figure:after {
counter-increment: figure;
content: "Fig. " counter(section) "." counter(figure);
}
Run Code Online (Sandbox Code Playgroud)
这个(适当的浏览器假设)给出了一个很好的标签"图1.1","图1.2"等等跟随任何图像.
问题:如何从Javascript访问它?现在的问题是在该双重我想访问任一特定计数器(在一定的DOM节点)的当前值或所述CSS生成的内容的值(在某一DOM节点)或,很明显,这两个信息.
背景:我想附加链接反向引用数字相应的数字,如下所示:
<a href="#fig1">see here</h>
------------------------^ " (Fig 1.1)" inserted via JS
Run Code Online (Sandbox Code Playgroud)
据我所见,它归结为这个问题:我可以访问content或counter-increment通过getComputedStyle:
var fig_content = window.getComputedStyle(
document.getElementById('fig-a'),
':after').content;
Run Code Online (Sandbox Code Playgroud)
但是,这不是实时值,而是样式表中声明的值.我找不到任何接口来访问真实的实时值.在计数器的情况下,甚至没有真正的CSS属性来查询.
编辑:通过DOM规范深入挖掘,我找到了DOM Level 2 Style Counter界面.这似乎a)允许访问当前计数器值,b)至少在Firefox中实现.但是,我不知道如何使用它.在Firebug输出后,我当前的方法悲惨地死了:
// should return a DOM 2 Counter interface implementation...
window.getComputedStyle(fig_a_element, ':after')
.getPropertyCSSValue("counter-increment")[0]
.getCounterValue();
[Exception... "Modifications …Run Code Online (Sandbox Code Playgroud) 如何将整数转换为罗马数字?
function romanNumeralGenerator (int) {
}
Run Code Online (Sandbox Code Playgroud)
例如,请参阅以下示例输入和输出:
1 = "I"
5 = "V"
10 = "X"
20 = "XX"
3999 = "MMMCMXCIX"
Run Code Online (Sandbox Code Playgroud)
警告:仅支持1到3999之间的数字
可以说我有一个这样的列表:
<ul style="list-style-type: upper-latin;">
<li>Lorem</li>
<li>Ipsum</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
(list-style-type可能是任何东西 - 上罗马,片假名,低希腊)
list-style-type: upper-latin;将在每个列表项的前面放一个字母(从A开始).有没有办法获得任何给定列表项的这封信?我可以使用jQuery .index()或类似的方法迭代列表.
或者,也许有办法从风格中提取标记?
这里的答案仅适用于拉丁字母列表.