我是javascript的新手,一直在寻找一个解决方案,但没有找到。
我想根据H1标签是否包含某些文本来切换某个p标签的内容。我的目标是把这个js放在每个页面的中,以备需要时使用。
我已经发现if和else if应该是一种合适的方法,但我也愿意接受其他的想法。我试着写一个switch语句,但我不知道如何让它工作。
到目前为止我找到的最接近的是...
<h1>This is about Red</h1>
<p id="colour"></p>
<script>
if('h1:contains("Red")'){
document.getElementById("colour").innerHTML = "Red description";
} else if ('h1:contains("Orange")'){
document.getElementById("colour").innerHTML = "Orange description";
} else if ('h1:contains("Green")'){
document.getElementById("colour").innerHTML = "Green description";
} else if ('h1:contains("Blue")'){
document.getElementById("colour").innerHTML = "Blue description";
}
</script>
...但是当H1标签包含其他文本时,p标签的内容不会改变,只有“红色”文本似乎可以工作。请有人告诉我哪里出错了吗?非常感谢!
3条答案
按热度按时间byqmnocz1#
虽然已经有了一个公认的答案,但我添加这个答案是为了展示一种不同的方法,我相信这种方法更容易扩展以供将来使用。
查找关键字
与公认的答案类似,使用
.includes()
可以确定文本中的颜色/关键字,但在进行字符串比较时,我也喜欢使用.toLowerCase()
之类的东西,因为如果两个单词的大写方式不同,区分大小写可能会导致.includes()
之类的东西返回false。使用对象
if/else
和switch()
语句可能很有用,但我经常倾向于在涉及几个不同选项的情况下使用对象或对象数组,对象还使以后添加和自定义变得更容易。实际上,这是在对象数组上使用
.filter()
来查找color
属性位于h1
元素文本中的任何对象。扩展/更新
我不知道它的计划用例是什么,但我假设如果它在文本中的任何地方找到单词"Red",您最终不会想要"Red description"。相反,您可能会有一些其他的措辞或句子,它们可以很容易地设置在这个对象中。添加其他颜色就像复制另一种颜色/线条并更改文本一样容易。
baubqpgj2#
如果你想要一些高级的if语句,你可以使用类似于第一种方法的if语句:
我以前没有在JavaScript的if语句中看到过
'h1:contains("Red")'
,你确定这是正确的吗?您可以获取H1的innerHTML,然后检查字符串
.includes
是否为颜色字符串。注意,我给了H1元素一个id ="h1"来直接访问该元素,否则您需要循环访问页面上的所有H1元素。
uoifb46i3#
请为h1元素使用一个选择器,然后使用它的内容进行检查。