如何在页面加载时替换多个标签中的单词实例?

时间:2019-02-16 22:42:36

标签: javascript jquery

尝试替换在剃刀视图中数据库项目的foreach循环中可能出现的单词。

到目前为止我尝试过的事情

<section class="section bg-gray">
    <div class="container">
        <div class="row gap-y">
            @foreach (var item in Model)
            {
                <div class="col-md-6 col-lg-4">
                    <div class="card d-block">
                        <p class="text-justify">@item.Text</p>
                        <p class="text-center mt-7">
                            <a class="btn btn-primary" href="#">Read more</a>
                        </p>
                    </div>
                </div>
            }
        </div>

        <script src="~/Scripts/jquery-3.3.1.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                var elements = getElementsByClassName("text-justify");
                $(elements).each(function(element) {
                    element.innerHTML = element.innerHTML.replace(/wordToReplace/g, 'newWord');
                });
            });
        </script>
    </div>
</section>

不好意思,我的JavaScript是我的新手。我寻找了类似的问题,但更接近的主题通常是关于在一个标签中替换单词的实例。请帮忙。

2 个答案:

答案 0 :(得分:1)

您不需要jQuery,您可以使用document.querySelectorAll并替换与选择器匹配的元素的所需文本。

请注意,我已经避开了text元素,并针对所需的类,将 justify 替换为 justified 以演示用法。

resume suspended
let elements = document.querySelectorAll(".text-justify");

elements.forEach(function(element){
  let textContent = element.innerText;
  let newTextContent = textContent.replace(/justify/g, 'justified');
  element.innerText = newTextContent;
})

答案 1 :(得分:0)

您不需要jQuery,请使用简单的forEach循环。我还重构了代码的其他部分(例如,您缺少document

document.getElementsByClassName("text-justify").forEach(element => element.innerHTML = element.innerHTML.replace(/word/g, "newWord"));

但是如果您真的想使用jQuery:

$(".text-justify").html((index, element) => element.replace(/word/g, "newWord"));