【发布时间】:2016-01-21 07:38:03
【问题描述】:
我是一名客观的 C 程序员,我在最近的项目中需要一些 Javascript。一周前,我从未使用过任何 javascript。我在这个特殊问题上花了几个小时,但无法弄清楚。我对javascript几乎一无所知,所以如果我犯了任何基本错误(很可能),我提前道歉。
基本上我有一个 html 页面。页面中有许多自定义跨度标签。我需要一个函数来告诉我任何特定的跨度标记是否是段落中的第一件事(不仅仅是第一个跨度)。例如如果 html 看起来像这样:
<p><span class="myClass">The</span> quick brown fox jumps over the lazy <span class="myClass">dog.</span></p>
然后我用
var spanList = Document.getElementsByClassName("myClass");
我需要一个为
返回 TRUE 的函数isFirstInParagraph(spanList[0]); //ie. the word "The"
和 FALSE 为
isFirstInParagraph(spanList[1]); // ie. the word "dog."
在以下情况下,两个跨度都将返回 FALSE,因为这两个都不是段落中的第一件事。:
<p>The <span class="myClass">quick</span> brown fox jumps over the lazy <span class="myClass">dog.</span></p>
我很想附上一些半工作代码,但我所做的一切都没有接近。在我看来,解决这个问题的一种方法是找到 SPAN 相对于段落的范围偏移,并查看它是否为零。但是我花了几个小时阅读文档,但无法弄清楚。我不禁认为这是因为我对 javascript/html 中的一般概念和术语缺乏了解。
可能相关的事情:
- 段落可能有也可能没有第一个单词。
- 并非所有 myClass 跨度都必须在段落中,例如,它们可能在标题中。
- myClass 跨度可以是斜体或粗体等。
- 这需要是 javascript 而不是查询。
- 它适用于原生 iOS 应用程序的 UIWebview 中。我会假设 Safari 兼容的东西会起作用。
提前致谢
【问题讨论】:
-
获取所有跨度然后测试它们的位置是错误的方法。只需检查段落的第一个子元素是否是 span 元素,但请注意,如果
<p>和<span>标记之间存在不可见的空格,这可能会产生误导。 -
感谢 Alnitak。无论如何,我必须遍历所有跨度,以获取有关它们的其他信息(我的问题中没有包含这些信息),所以我认为这可能是合适的地方。
标签: javascript html paragraph