用新标记内容替换html标记

a6b3iqyw  于 2022-12-09  发布在  其他
关注(0)|答案(4)|浏览(167)

页面的html标签没有lang = en属性,我尝试将其添加到html标签中,下面是我所做的代码,但它替换了整个html内容,而不是仅将lang = en添加到html中。

window.addEventListener('load', function () {
    alert("It's loaded!")
    const cond = document.getElementsByTagName('html')[0]|| false;
    console.log(cond)
     if (cond) {
          $('html').each(function() {
              $(this).replaceWith($('<html lang="en">'));
          });
    }});

我也尝试了下面的代码,但它不太工作,基本上它得到html内容,它附加了新的html标签和内容。

const htmlContent = $( "html" ).html();
    if (cond) {
        $('html').replaceWith('<html lang="en">' + htmlContent +  '</html>');
    }
khbbv19g

khbbv19g1#

使用vanilla JS的可能解决方案可能是。

document.querySelector('html').setAttribute("lang", "en")
hrysbysz

hrysbysz2#

这不是最佳的执行方式,因为它可能会导致事件中断链接或其他效能问题。执行下列动作会比较安全:

$('html').attr('lang', 'en')`

这样,您只添加了一个属性,而不添加其他属性。

z31licg0

z31licg03#

使用attr方法。

$(this).attr("lang", "en");
wlzqhblo

wlzqhblo4#

根据您的代码,您可以尝试使用vanilla js:

<script>
let domHTML = document.getElementsByTagName('html')[0];
let lang = domHTML.getAttribute('lang');
console.log('lang: ' + lang);
domHTML.setAttribute('lang', 'fr');
lang = domHTML.getAttribute('lang');
console.log('lang: ' + lang);
</script>

有关使用此属性方法的详细信息,请参阅setAttributegetAttribute

相关问题