我只是Java语言的初学者:)

我希望能够在文本块中接收所有段落(意味着所有部分都用<br/ >标记彼此分开),因此我可以根据语言(ltr与rtl)在每个这样的段落上应用不同的对齐设置。

例如,如果我有以下文本:

Hello<br/>שלום


我希望“ Hello”与左侧对齐,而“שלום”与右侧对齐。
可以以某种方式使用document.evaluate吗?

最佳答案

假设您有DOM子树,则可以先深度遍历它,以查找文本节点和BR元素。

var subtree = document.createElement('DIV');
subtree.innerHTML = 'Hello<br/>שלום';

var paragraphs = [""];
function walkSplittingOnBR(node) {
  switch (node.nodeType) {
    case 1:
      if (node.nodeName === 'BR') { paragraphs.push(''); }
      break;
    case 3:
      paragraphs[paragraphs.length - 1] += node.nodeValue;
  }
  for (var child = node.firstChild; child; child = child.nextSibling) {
    walkSplittingOnBR(child);
  }
}
walkSplittingOnBR(subtree);


["Hello","שלום"]留在paragraphs中。




  我希望“ Hello”与左侧对齐,而“שלום”与右侧对齐。


您有三个选择。


<span dir="rtl">שלום</div>中的HTML dir attributes一样,如从右到左的脚本一样,在Semitic语言家族中也是如此。
CSS direction<span style="direction:rtl">שלום</span>
Unicode bidi embedding codepoints U + 202A-U + 202C。


Closure的detectRtlDirectionality启发式检测RTL文本。

关于javascript - 使用javascript检索所有段落,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16021008/

10-11 23:28
查看更多