微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在多个 html 文件上使用 innerHTML/innerText 打印变量

如何解决在多个 html 文件上使用 innerHTML/innerText 打印变量

所以我有 1 个以上的 html 文件,在每个文件中都有一个

的元素,id:'level1' 所以 ```

在我拥有的 js 文件上:

var level1 = {
   name: 'Hello',author: 'me',id: '1'
}

然后我用innerText在html页面上写这些信息,但我也尝试了innerHTML和TextContent

document.getElementById('level1').innerText = level1.name;

以及所有其他名称,但我在所有文件中只看到第一个 var 信息,但我还有其他 var,例如 level2 level3,它们以相同的方式打印,但其他变量仅显示一个 html 文件中>

在我的代码中:

index.html

<!-- #1 -->
    <div class="table">
        <a href=""><img class="thumb" onclick="video1x1()" src="images/img1.jpg" width="16%" height="80%"></a>
        <a href="list/1"><p class="p1" id="level1"></p></a>
        <p class="author" id="author1"></p>
     </div>
<!----->

和另一个 html 文件

1.html

<p class="title" id="level1"></p><a href="../2"><p class="ttitle">></p>

这对 level1 var idk 有效,但对其他人没有。

基本上我希望它在每个具有 id="level1" 的元素上写成 level1.name

解决方法

使用当前的 javascript 变量格式,为正确的元素轻松选择正确的值有点麻烦 - 但您可以执行以下操作:

var level1 = {
    name: 'Hello',author: 'me',id:1
}
var level2 = {
    name: 'Goodbye',author: 'you',id:2
}



// find all the elements that have an ID beginning with "level" 
document.querySelectorAll('[id^="level"]').forEach( ( el,i )=>{
  
  // to refer to the numbered variable define it as a property of the window
  let obj=window[ 'level'+( i + 1 ) ];
  
  if( obj ){
      // find the number from the HTML element
      let a=el.id.match(/\d/);
      
      // if the current HTML element index (+1) matches the number above....
      if( a==(i + 1) ){
        // change the content of the element
        el.innerHTML=obj.name;
        el.parentNode.parentNode.querySelector( 'p.author' ).innerHTML=obj.author;
      }
  }
});
<div class="table">
    <a href=""><img class="thumb" onclick="video1x1()" src="images/img1.jpg" width="16%" height="80%"></a>
    <a href="list/1"><p class="p1" id="level1"></p></a>
    <p class="author" id="author1"></p>
</div>
 
<div class="table">
    <a href=""><img class="thumb" onclick="video1x1()" src="images/img2.jpg" width="16%" height="80%"></a>
    <a href="list/2"><p class="p2" id="level2"></p></a>
    <p class="author" id="author2"></p>
</div>

如果将 JS 变量压缩为单个变量会更容易,而 JSON 将是一个很好的候选者。这将使匹配代码更简单、更健壮。

即:

var levels={
    1:{name:'Hello',author:'me'},2:{name:'Goodbye',author:'you'}
};

诚然,上述内容不是有效的 JSON - 它是一个对象文字,但您明白了。如果您在幕后最初使用它来创建变量,则很容易从数据库生成此类内容

var levels={
    1:{name:'Hello',author:'you'}
};


Object.keys( levels ).forEach( i=>{
    let obj=levels[ i ];
    let name=document.querySelector('[id="level'+i+'"]');
    let author=document.querySelector('[id="author'+i+'"]');
    
    if( name )name.innerHTML=obj.name;
    if( author )author.innerHTML=obj.author;
})
<div class="table">
    <a href=""><img class="thumb" onclick="video1x1()" src="images/img1.jpg" width="16%" height="80%"></a>
    <a href="list/1"><p class="p1" id="level1"></p></a>
    <p class="author" id="author1"></p>
</div>
 
<div class="table">
    <a href=""><img class="thumb" onclick="video1x1()" src="images/img2.jpg" width="16%" height="80%"></a>
    <a href="list/2"><p class="p2" id="level2"></p></a>
    <p class="author" id="author2"></p>
</div>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?