1

我正在编写一个非常混杂的 Android 单位转换应用程序,使用各种可怕的东西让它变得漂亮。本质上,它通过 vebviews 执行 JS,并在花哨的微调器中显示根据任意大小列表格式化的 html,下面有缩写......等等等等。

反正。现在我有这样的事情:

for (l = 0; l < this.slotData.length; l += 1) {
    out += '<li>' + this.slotData[l].values[i] + " "+'<li class="sw-right">'+this.slotData[l].abbreviations[i]+'</li></li>';
}

其中 slotData[l] 代表说“毫米”,缩写是“毫米”,它在下面,格式略有不同。这个想法是您可以输入数字,它们将显示在大毫米下方,小毫米旁边,这样您就可以看到“4400mm”。

我正在尝试在我的代码的不同位置访问和修改“sw-right”类的子 li。想知道是否有人知道一个简单的方法来做到这一点?我可以毫无困难地访问父母,但我不确定从那里去的正确方法是什么......

我的访问是这样的:

this.slotEl[slot].......

有什么想法吗?

多谢你们...

纳撒尼尔。

4

4 回答 4

1

我建议使用 jquery:

$('li.sw-right').html('html_you_want_set');
于 2012-05-21T20:27:51.527 回答
1

您不应该尝试嵌套<li>元素。HTML 语法不允许嵌套列表项。由于</li>结束标签是可选的,浏览器很可能只是将您的嵌套项目视为第一个项目的兄弟,并丢弃第二个结束标签作为第二个项目的双重关闭。

附加:由于您试图组成一个由两部分组成的列表项,也许您真正想要的是一个定义列表。对于嵌套在标签内的范围设置属性,请考虑使用span

于 2012-05-21T20:47:05.753 回答
0

你可以使用

var myNestedLI = document.getElementsByClassName( 'sw-right' )[ 0 ]

或者

var topElements = document.getElementsByTagName( 'li' );

var nestedElements = []

for( var i = 0; i < topElements.length; i ++ )
{

var theseElements = topElements[ i ].getElementsByTagName( 'li' )

for( var j = 0 ; j < theseElements.length; j ++ ) nestedElements.push( theseElements[ j ] )

}

// nestedElements now contains all nested LI elements
于 2012-05-21T20:25:36.223 回答
0

正如 Sparky 指出的那样,您不能嵌套<li>这样的标签。第二个 li 将被视为与第一个不同的列表项,使它们成为兄弟。<div>相反,您想要的是<li>. Div 是一个通用的块级元素。(块级意味着它们之间有一个换行符,通用意味着 div 的含义和样式完全取决于您。)

我建议这个更具描述性的标记:

<li class="calculated-value">
  <div class="unit">*large unit name*</div>
  <div class="value">*small value with abbreviation*</div>
</li>

在您的 CSS 中,以下规则将使值 div 显示更小:

li.calculated-value div.value { font-size: 75%; }

(You can add additional rules to give it an indentation, better spacing, bold or color settings, etc. And you can add another line for div.unit that styles that one separately.)

于 2012-05-21T21:22:01.720 回答