我正在用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>
您离解决方案如此之近。您只需要使用从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>