Potresti utilizzare l'API fetch (javascript) per prelevare i dati da un file json che contiene i vari testi anzichè metterli su file di testo separati.
Lo puoi fare sia con un approccio di elementi fissi con tot elementi (bottoni e div contenitori che ho chiamato item), oppure dinamico in base ai base dati presenti sul file json.
questo è il contenuto del file dati.json prensete nella root del progetto.
codice:{ "div1": "testo 1", "div2": "testo 2", "div3": "testo 3" }codice:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { box-sizing: border-box; } #container { display: flex; flex: 1 1 0; margin-bottom: 20px; } .item { width: 200px; height: 100px; border: 1px solid red; overflow: auto; padding: 20px; } </style> </head> <body> <div id="container"> <div class="item"></div> <div class="item"></div> <div class="item"></div> </div> <div id="buttons"> <button id="b1">bottone1</button> <button id="b2">bottone2</button> <button id="b3">bottone3</button> </div> <script> const items = document.getElementsByClassName('item') const btn1 = document.getElementById('b1') const btn2 = document.getElementById('b2') const btn3 = document.getElementById('b3') const loadJson = async () => { const fileJson = await fetch('./dati.json') const dataJson = fileJson.json() return dataJson } (async function init() { const objJson = await loadJson() function viewItems(idx, div) { items[idx].textContent = objJson[div] } btn1.addEventListener('click', viewItems.bind(this, 0, "div1")) btn2.addEventListener('click', viewItems.bind(this, 1, "div2")) btn3.addEventListener('click', viewItems.bind(this, 2, "div3")) })() </script> </body> </html>
Mentre per il discorso dinamico potresti fare in questo modo.
codice:<div id="container"></div> <div id="buttons"></div> <script> const container = document.getElementById('container') const items = document.getElementsByClassName('item') const btns = document.getElementById('buttons') const loadJson = async () => { const fileJson = await fetch('./dati.json') const dataJson = fileJson.json() return dataJson } (async function init() { const objJson = await loadJson() function viewItems(idx, div) { items[idx].textContent = objJson[div] } const objJsonCount = Object.keys(objJson).length for (let i = 0; i < objJsonCount; i++) { const myDiv = document.createElement('div') myDiv.setAttribute('class', 'item') container.appendChild(myDiv) const myBtn = document.createElement('button') myBtn.setAttribute('class', 'mybtn') myBtn.textContent = `bottone${i + 1}` btns.appendChild(myBtn) btns.children[i].addEventListener('click', viewItems.bind(this, i, `div${i + 1}`)) } })() </script>

Rispondi quotando