这段javascript代码能写得优雅吗?

Posted

技术标签:

【中文标题】这段javascript代码能写得优雅吗?【英文标题】:Can this javascript code be written elegantly? 【发布时间】:2020-03-28 05:11:08 【问题描述】:

由于我是 javascript 新手,谁能帮助我优雅地编写这段代码。我正在将它添加到 wordpress,所以我已经尝试了 jquery,但由于某种原因它不起作用,所以我尝试了这种可行的方法,但我不喜欢它的编写方式。

如果有人可以帮助我以更好的方式写作,那就太好了。谢谢!

var par01 = document.getElementById("tt-insights-home").getElementsByClassName("excerpt")[0].innerhtml;
var par02 = document.getElementById("tt-insights-home").getElementsByClassName("excerpt")[1].innerHTML;
var par03 = document.getElementById("tt-insights-home").getElementsByClassName("excerpt")[2].innerHTML;
var slicedPar01 = par01.slice(0, -17);
var slicedPar02 = par02.slice(0, -17);
var slicedPar03 = par03.slice(0, -17);
 document.getElementById("tt-insights-home").getElementsByClassName("excerpt")[0].innerHTML = slicedPar01;
 document.getElementById("tt-insights-home").getElementsByClassName("excerpt")[1].innerHTML = slicedPar02;
 document.getElementById("tt-insights-home").getElementsByClassName("excerpt")[2].innerHTML = slicedPar03;

【问题讨论】:

获取对元素的引用一次,而不是多次。 【参考方案1】:

我只是循环浏览摘录,然后您不会只对 3 个摘录进行硬编码:

var home = document.getElementById("tt-insights-home");
var excerpts = home.getElementsByClassName("excerpt");

for (i = 0; i < excerpts.length; i++) 
  excerpts[i].innerHTML = excerpts[i].innerHTML.slice(0, -17);

【讨论】:

太棒了!这正是我想要的。谢谢!【参考方案2】:

可能是这样的:

var excerptElement = document.getElementById("tt-insights-home").getElementsByClassName("excerpt");

excerptElement[0].innerHTML = excerptElement[0].innerHTML.slice(0, -17);
excerptElement[1].innerHTML = excerptElement[1].innerHTML.slice(0, -17);
excerptElement[2].innerHTML = excerptElement[2].innerHTML.slice(0, -17);

【讨论】:

【参考方案3】:

可能是主题的一个小变化 - 顺便说一句,未经测试,但看起来不错。

let insights=document.getElementById( 'tt-insights-home' )
Array.from( insights.querySelectorAll('excerpt') ).foreach( node =>
    node.textContent=node.textContent.slice(0,-17)
)

【讨论】:

以上是关于这段javascript代码能写得优雅吗?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 进行优雅的字段校验,写得太好了!

IntelliJ IDEA能写Java,HTML,JavaScript,css,xml这些程序吗?

月入 3.6 万,代码写得太少被开除。。

月入 3.6 万,代码写得太少被开除。。

有人可以解释这段 JavaScript 代码吗

java [Java]我想写得更优雅