提问者:小点点

香草JS-如何映射一个字符串数组,并设置按钮的InnerHtml[重复]


我正在用vanillaJS编写一个简单的应用程序。我有一个字符串数组,我想通过数组进行映射,并将innerHTML的值分配给按钮。我可以用. map()来做吗?截至目前,我最多只能得到分配给按钮innerHTML的最后一件事('next

这是我的密码

var buttons = document.getElementsByTagName("button");
const a = ["click for more", "see more", "details page", "next >"];

a.map((i) => {
  buttons.innerHTML = i;
});
<div>
  <button>Submit</button>
  <button>Submit</button>
  <button>Submit</button>
  <button>Submit</button>
</div>
<script src="index.js"></script>

共2个答案

匿名用户

您离解决方案如此之近。您只需要使用从Array. for每()获得的索引访问数组项

请注意,Array.map()被替换为Array. for每(),因为您不使用创建新数组的map()函数的返回值。(感谢@Ivar)

var buttons = document.getElementsByTagName("button");
const a = ["click for more", "see more", "details page", "next >"];

a.forEach((text, index) => {
  buttons[index].innerHTML = text;
});
<body>
    <div>
      <button>Submit</button>
      <button>Submit</button>
      <button>Submit</button>
      <button>Submit</button>
    </div>
    <script src="index.js"></script>
  </body>

匿名用户

你错过了索引按钮

如果你在按钮上使用querySelectorAll,你会得到一个NodeList. for每一个,这比使用Array.for每一个更有意义

var buttons = document.querySelectorAll("button");
const a = ["click for more", "see more", "details page", "next >"];

buttons.forEach((but, i) => {
  but.innerHTML = a[i];
});
<body>
  <div>
    <button>Submit</button>
    <button>Submit</button>
    <button>Submit</button>
    <button>Submit</button>
  </div>
  <script src="index.js"></script>
</body>