我想在页面加载之前加载JavaScript代码。

时间:2018-10-15 16:06:18

标签: javascript jquery html

我在使用javascript查找和替换代码时遇到问题,可能是之前已经回答过,但我没有找到对我有帮助的答案。

$(document).ready(function(){
     $('[class="incometax"]').each(function(i,v){
    var text =$(v).text();
  var new_text = text.replace("old text", "new text");  
  $(v).text(new_text);
});
});

它工作正常,但是问题是页面加载时会显示旧文本,然后闪烁并更改为新文本。我需要在页面加载之前先加载此代码,这样它才不会显示旧文本,也不会眨眼将其更改为新文本,而是直接显示新文本。

2 个答案:

答案 0 :(得分:2)

没有客户端可以在加载文档之前使用JS更改文本的方法。

我认为解决方案的唯一方法是使用不可见的元素在其上运行文本更改脚本...然后,一旦更改了文本,便使其可见。

CSS

.incometax{
  visibility: hidden;
}

脚本

$(document).ready(function(){
  $('[class="incometax"]').each(function(i,v){
    var text =$(v).text();
    var new_text = text.replace("old text", "new text");  
    $(v).text(new_text);
    $(v).css({"visibility":"visible"});  // Make them visible.
  });
});

如果有一种效果无法同时出现,则可以选择以下方法:

$(document).ready(function(){
  $('[class="incometax"]').each(function(i,v){
    var text =$(v).text();
    var new_text = text.replace("old text", "new text");  
    $(v).text(new_text);
  });

  $('[class="incometax"]').css({"visibility":"visible"});  // Make them visible.
});

您可以使用$(".incometax")代替$('[class="incometax"]')。 ;)


编辑

可以这样写,与前文相同,以便更简洁,更有效。
它使用$(this)并避免无用的查找。它还使用链接。

$(document).ready(function(){
  $(".incometax")
    .each(function(){
      $(this).text($(this).text().replace(/old text/g, "new text"));
    })
    .css({"visibility":"visible"});
});

答案 1 :(得分:0)

有一个按名称加载的功能。您可以通过以下方式尝试使用它:

<body onload="changetext()">
</body>
<script type="text/javascript">
function changetext(){
  $('[class="incometax"]').each(function(i,v){
    var text =$(v).text();
    var new_text = text.replace("old text", "new text");  
    $(v).text(new_text);
  });
}
</script>