猿问

将 JavaScript 代码包含在 HTML 中。并非所有工作

我正在尝试将我的JavaScript代码包含在我的HTML代码中。我在一个文件中实现了所有代码,现在我尝试将其拆分为3个文件(.html,.css,.js)。问题是:如果将JavaScript脚本放入.js文件中,并将a放入HTML文件中,它将无法正常工作(但只能部分工作)。我必须对多个文件执行此操作。例如,如何拆分此文件?<src>



慕虎7371278
浏览 113回答 2
2回答

一只萌萌小番薯

啊,游戏需要全屏才能看到垃圾请参阅不同的窗格。css 窗格可以放在 css 文件中,JS 窗格内容可以放在外部 JS 文件中。这里根本不需要jQuery链接标签和外部JS脚本进入头部,链接到外部CSS文件也是如此我不明白“runme”是做什么的,似乎并不重要window.addEventListener("load", function() {&nbsp; document.getElementById("gioca").addEventListener("click", timerApparizioni);&nbsp; if (document.getElementById("runme")) {&nbsp; &nbsp; document.getElementById("runme").addEventListener("click", function() {&nbsp; &nbsp; &nbsp; let SIZE = 4;&nbsp; &nbsp; &nbsp; let r = (Math.floor(Math.random() * SIZE)) + 1;&nbsp; &nbsp; &nbsp; let c = (Math.floor(Math.random() * SIZE)) + 1;&nbsp; &nbsp; &nbsp; document.querySelector("section.oggettoElements:nth-of-type(" + r + ") i:nth-child(" + c + ")").style.color = "#FF0000";&nbsp; &nbsp; })&nbsp; }})const delay = 3000;// Funzione per iniziare a giocare: quando l'utente preme "gioca" iniziano ad apparire gli oggetti e si avvia un timerfunction timerApparizioni() {&nbsp; timerOggetti = setInterval(apparizioneOggetto, delay);}let tuttiVisibili = false;// Funzione per prendere un oggetto a caso della tabella e renderlo visibilefunction apparizioneOggetto(eve) {&nbsp; let oggettoScelto, colonna, riga;&nbsp; tuttiVisibili = !(&nbsp; &nbsp; Array&nbsp; &nbsp; .from(document.querySelectorAll('div[id^="c-"]'))&nbsp; &nbsp; .some((pe_grid) => {&nbsp; &nbsp; &nbsp; return pe_grid.style.visibility !== 'visible';&nbsp; &nbsp; })&nbsp; );&nbsp; if (tuttiVisibili) {&nbsp; &nbsp; document.getElementById('gioca').setAttribute('disabled', 'disabled');&nbsp; } else {&nbsp; &nbsp; do {&nbsp; &nbsp; &nbsp; colonna = 1 + Math.floor(4 * Math.random());&nbsp; &nbsp; &nbsp; riga = 1 + Math.floor(4 * Math.random());&nbsp; &nbsp; &nbsp; oggettoScelto = document.querySelector(`#c-${colonna}${riga}`); // In alternativa: document.getElementById(`c-${colonna}${riga}`)&nbsp; &nbsp; } while (oggettoScelto.style.visibility === 'visible');&nbsp; &nbsp; oggettoScelto.style.visibility = 'visible';&nbsp; }}window.addEventListener("load", function() {&nbsp; document.getElementById("gioca").addEventListener("click", timerApparizioni);&nbsp; if (document.getElementById("runme")) {&nbsp; &nbsp; document.getElementById("runme").addEventListener("click", function() {&nbsp; &nbsp; &nbsp; let SIZE = 4;&nbsp; &nbsp; &nbsp; let r = (Math.floor(Math.random() * SIZE)) + 1;&nbsp; &nbsp; &nbsp; let c = (Math.floor(Math.random() * SIZE)) + 1;&nbsp; &nbsp; &nbsp; document.querySelector("section.oggettoElements:nth-of-type(" + r + ") i:nth-child(" + c + ")").style.color = "#FF0000";&nbsp; &nbsp; })&nbsp; }})// funzione per andare alla pagina "menu principale"function GoToMainMenu() {&nbsp; location.href = "mainMenu.html";}// PARTE INIZIALIZZAZIONE gioco// seleziono per classe oggetti e contenitoriconst oggettoElements = document.querySelectorAll(".oggetto");const contenitoreElements = document.querySelectorAll(".contenitore");// punteggio e vitevar vite = 3;var score = 0;const divScore = document.getElementById("score");// PARTE DEI LISTENERS per il gioco// Aggiungo un listener ad ogni oggetto per "ascoltare" quando inizia il drag&nbsp;oggettoElements.forEach(ogg => {&nbsp; ogg.addEventListener("dragstart", dragStart);});// Aggiungo più listener ad ogni elemento per "ascoltare" cosa succede tra l'inizio del drag e la sua fine (drop)contenitoreElements.forEach(ogg => {&nbsp; ogg.addEventListener("dragenter", dragEnter); // "Ascolta" se un oggetto è posizionato sopra ad un contenitore&nbsp; ogg.addEventListener("dragover", dragOver); // "Ascolta" se un oggetto è rilasciato sopra ad un contenitore&nbsp; ogg.addEventListener("dragleave", dragLeave); // "Ascolta" se un oggetto va via da un contenitore&nbsp; ogg.addEventListener("drop", drop); // "Ascolta" se un oggetto viene rilasciato sopra ad un contenitore});// PARTE DEGLI EVENTI DRAG AND DROP per il gioco// Evento "inizio a prendere un oggetto"function dragStart(event) {&nbsp; event.dataTransfer.setData("text", event.target.id);}// Se un oggetto viene posizioneto sopra al contenitore, viene aggiunto "contenitore-over" alla classe del contenitore// Determina l'effetto visivo dell'ingrandirsi di un contenitore quando un oggetto viene trascinato soprafunction dragEnter(event) {&nbsp; if (!event.target.classList.contains("dropped")) {&nbsp; &nbsp; event.target.classList.add("contenitore-hover");&nbsp; }}// "Lascia il comando all'itente": evita la gestione di default e impedisce che venga droppato in automaticofunction dragOver(event) {&nbsp; if (!event.target.classList.contains("dropped")) {&nbsp; &nbsp; event.preventDefault();&nbsp; &nbsp; /* developer.mozilla.org&nbsp; &nbsp; Il metodo preventDefault() dell'interfaccia Event dice all'user agent che se l'evento non viene esplicitamente gestito,&nbsp;&nbsp; &nbsp; la sua azione predefinita non dovrebbe essere presa come normalmente. L'evento continua a propagarsi come al solito,&nbsp;&nbsp; &nbsp; a meno che uno dei suoi listener di eventi non chiami stopPropagation() o stopImmediatePropagation(), uno dei due&nbsp;&nbsp; &nbsp; interrompa la propagazione contemporaneamente. */&nbsp; }}/* Se un oggetto viene posizionato sopra ad un contenitore, esso viene ingrandito dalla funzione dragEnter.Se poi il giocatore "cambia idea", e trascina lontano dal contenitore il suo oggetto, esso deve tornare della misura inizialeRimuovo "contenitore-over" dalla classe del contenitore */function dragLeave(event) {&nbsp; if (!event.target.classList.contains("dropped")) {&nbsp; &nbsp; event.target.classList.remove("contenitore-hover");&nbsp; }}var counterRightDropped = 0;/* gestione del rilascio/drop: Se l'oggetto viene rilasciato sopra ad un contenitore:- il contenitore ritorna della misura iniziale di default (come in dragLeave, viene rimosso "contenitore-over" dalla classe)- viene fatto un confronto tra l'id parziale dell'oggetto e l'id accettabile dal contenitore.- Se l'abbinamento è giusto (ossia confronto = true), viene aggiunto "dragged" alla classe dell'oggetto, facendo in modo che non sia più disponibile&nbsp;&nbsp; (effetto visivo css) ne' prendibile (draggable=false)- Viene incrementato o decrementato il contatore del punteggio a seconda dell'esisto del confronto */function drop(event) {&nbsp; event.target.classList.remove("contenitore-hover");&nbsp; const idAccettabileContenitore = event.target.getAttribute("idAccettabile"); // Prendo l'id che il contenitore accetta&nbsp; const idOggetto = event.dataTransfer.getData("text"); // Con dragStart ho settato l'attributo text a "event.target.id". Qui lo riprendo (ex: "11")&nbsp; const sottostringaID = idOggetto.substr(0, 3); // Sottostringa dell'id dell'oggetto (ex. da "13" a "1")&nbsp; const vita1 = document.getElementById("vita1");&nbsp; const vita2 = document.getElementById("vita2");&nbsp; const vita3 = document.getElementById("vita3");&nbsp; const giocabutton = document.getElementById('gioca');&nbsp; const nuovaPart = document.getElementById("nuovaPartita");&nbsp; if (sottostringaID === idAccettabileContenitore) {&nbsp; &nbsp; const oggettoGiusto = document.getElementById(idOggetto);&nbsp; &nbsp; oggettoGiusto.classList.add("dragged");&nbsp; &nbsp; oggettoGiusto.setAttribute("draggable", "false");&nbsp; &nbsp; score++;&nbsp; &nbsp; counterRightDropped++;&nbsp; &nbsp; divScore.innerText = "Punteggio: " + score;&nbsp; } else {&nbsp; &nbsp; if (vita1.style.visibility === "visible") {&nbsp; &nbsp; &nbsp; vita1.style.visibility = 'hidden';&nbsp; &nbsp; } else if (vita3.style.visibility === "visible") {&nbsp; &nbsp; &nbsp; vita3.style.visibility = 'hidden';&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; vita2.style.visibility = 'hidden';&nbsp; &nbsp; }&nbsp; &nbsp; score = score - 2;&nbsp; &nbsp; divScore.innerText = "Punteggio: " + score;&nbsp; &nbsp; vite = vite - 1;&nbsp; &nbsp; if (vite == 0) {&nbsp; &nbsp; &nbsp; vita2.style.visibility = 'hidden';&nbsp; &nbsp; &nbsp; giocabutton.style.visibility = 'hidden';&nbsp; &nbsp; &nbsp; setTimeout(function() {&nbsp; &nbsp; &nbsp; &nbsp; alert("GAME OVER! \nVite-Alberelli esauriti! \nPunteggio finale: " + score);&nbsp; &nbsp; &nbsp; }, 20)&nbsp; &nbsp; &nbsp; clearInterval(timerOggetti);&nbsp; &nbsp; &nbsp; nuovaPart.style.visibility = 'visible';&nbsp; &nbsp; }&nbsp; }&nbsp; if (counterRightDropped === 16) {&nbsp; &nbsp; giocabutton.style.visibility = 'hidden';&nbsp; &nbsp; oggettoElements.forEach(ogg => {&nbsp; &nbsp; &nbsp; ogg.setAttribute("class", "fas fa-check-circle oggetto");&nbsp; &nbsp; });&nbsp; &nbsp; setTimeout(function() {&nbsp; &nbsp; &nbsp; alert("HAI VINTO! \nPunteggio finale: " + score);&nbsp; &nbsp; }, 50)&nbsp; &nbsp; clearInterval(timerOggetti);&nbsp; &nbsp; nuovaPart.style.visibility = 'visible';&nbsp; }}body {&nbsp; margin: 0;&nbsp; height: 100vh;&nbsp; background: linear-gradient(to right bottom, gold, limegreen);}h1,h2,h3 {&nbsp; margin: 0 0 3px 0;}h1 {&nbsp; text-align: center;&nbsp; color: green;&nbsp; font: bold 52px Helvetica, Arial, Sans-Serif;&nbsp; text-shadow: 1px 1px #fe4902, 2px 2px #fe4902, 3px 3px #fe4902;}h1:hover {&nbsp; position: relative;&nbsp; top: -3px;&nbsp; left: -3px;&nbsp; text-shadow: 1px 1px #fe4902, 2px 2px #fe4902, 3px 3px #fe4902, 4px 4px #fe4902, 5px 5px #fe4902, 6px 6px #fe4902;&nbsp; cursor: pointer;}#time {&nbsp; color: navy;&nbsp; font: bold 24px Helvetica, Arial, Sans-Serif;&nbsp; text-align: center;}#score {&nbsp; color: blue;&nbsp; font: bold 24px Helvetica, Arial, Sans-Serif;&nbsp; text-shadow: 1px 1px #02a2fe, 2px 2px #02a2fe, 3px 3px #02a2fe;&nbsp; text-align: center;}h2 {&nbsp; color: orange;&nbsp; font: bold 34px Helvetica, Arial, Sans-Serif;&nbsp; text-shadow: 1px 1px #02a2fe, 2px 2px #02a2fe, 3px 3px #02a2fe;&nbsp; text-align: center;}h3 {&nbsp; color: navy;&nbsp; font: bold 24px Helvetica, Arial, Sans-Serif;&nbsp; text-shadow: 1px 1px #02a2fe, 2px 2px #02a2fe, 3px 3px #02a2fe;&nbsp; text-align: center;}.oggettoElements {&nbsp; display: flex;&nbsp; justify-content: center;&nbsp; margin: 32px;}.oggetto {&nbsp; height: 80px;&nbsp; width: 80px;&nbsp; display: flex;&nbsp; align-items: center;&nbsp; justify-content: center;&nbsp; font-size: 64px;&nbsp; margin: 0px 8px;&nbsp; cursor: move;&nbsp; transition: opacity 0.2s;}.oggetto:hover {&nbsp; opacity: 0.5;}.contenitore {&nbsp; height: 104px;&nbsp; width: 128px;&nbsp; margin: 16px auto;&nbsp; display: flex;&nbsp; justify-content: center;&nbsp; align-items: center;&nbsp; flex-direction: column;&nbsp; text-align: center;&nbsp; font-size: 64px;&nbsp; font-weight: bold;&nbsp; background-color: #fff;&nbsp; border: 3px dashed #111;&nbsp; transition: border-width 0.2s, transform 0.2s, background-color 0.4s;}.flexcontainer {&nbsp; display: flex;&nbsp; flex-direction: row;}.contenitore span {&nbsp; font-size: 20px;&nbsp; pointer-events: none;&nbsp; /* The element is never the target of pointer events */}.contenitore.contenitore-hover {&nbsp; border-width: 5px;&nbsp; transform: scale(1.3);}.contenitore.dropped {&nbsp; border-style: solid;&nbsp; color: #fff;}.contenitore.dropped i {&nbsp; pointer-events: none;}.oggetto.dragged {&nbsp; user-select: none;&nbsp; opacity: 0.1;&nbsp; cursor: default;}.oggetto.dragged:hover {&nbsp; opacity: 0.1;}.tabella {&nbsp; height: 70%;&nbsp; width: 20%;&nbsp; margin: 16px auto;&nbsp; display: flex;&nbsp; justify-content: center;&nbsp; align-items: center;&nbsp; flex-direction: column;}body>section {&nbsp; display: table;&nbsp; align: center;}section.oggettoElements {&nbsp; display: table-row;}section.oggettoElements>div {&nbsp; display: table-cell;&nbsp; height: 80px;&nbsp; width: 80px;&nbsp; align-items: center;&nbsp; justify-content: center;&nbsp; visibility: hidden;&nbsp; text-align: center;}section.oggettoElements>div>div {&nbsp; display: flex;&nbsp; height: 30px;&nbsp; width: 100px;&nbsp; align-items: center;}div>span {&nbsp; flex: 1;&nbsp; text-align: center}#gioca {&nbsp; text-align: center;&nbsp; cursor: pointer;&nbsp; visibility: visible;}.tree {&nbsp; height: 50px;&nbsp; width: 50px;&nbsp; margin: 16px auto;&nbsp; display: flex;&nbsp; justify-content: center;&nbsp; align-items: center;&nbsp; flex-direction: column;&nbsp; text-align: center;&nbsp; font-size: 40px;&nbsp; font-weight: bold;}.flexalberi {&nbsp; display: flex;&nbsp; flex-direction: row;}#nuovaPartita {&nbsp; cursor: pointer;}<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.9.0/css/all.css"><div onClick="GoToMainMenu();">&nbsp; <h1>Trash CAN or trash CAN't?</h1></div><div id="gioca">&nbsp; <h2><u>GIOCA</u>&nbsp; &nbsp; <h2></div><div>&nbsp; <h3>Abbina il rifiuto al bidone giusto!</h3></div><div id="nuovaPartita" onClick="history.go(0);" style="visibility:hidden;">&nbsp; <h2>GIOCA ANCORA</h2></div><div id="score">Punteggio: 0</div><!-- section contenente le vite-alberelli --><section class="flexalberi">&nbsp; <i class="fas fa-tree tree" id="vita1" style="color: #008000; visibility:visible;"></i>&nbsp; <i class="fas fa-tree tree" id="vita2" style="color: #008000; visibility:visible;"></i>&nbsp; <i class="fas fa-tree tree" id="vita3" style="color: #008000; visibility:visible;"></i></section><!-- section contenente i contenitori (fissi) in cui andranno trascinati gli oggetti --><section class="contenitore-elements flexcontainer">&nbsp; <div class="fas fa-trash contenitore" idAccettabile="c-1" style="color: #0000FF;"><span>Carta</span></div>&nbsp; <div class="fas fa-trash contenitore" idAccettabile="c-2" style="color: #008000;"><span>Vetro</span></div>&nbsp; <div class="fas fa-trash contenitore" idAccettabile="c-3" style="color: #FFD700;"><span>Plastica</span></div>&nbsp; <div class="fas fa-trash contenitore" idAccettabile="c-4" style="color: #8B4513;"><span>Organico</span></div></section><!-- Tabella contenente gli oggetti che appariranno sullo schermo durante la partita --><section class="tabella">&nbsp; <section class="oggettoElements">&nbsp; &nbsp; <div class="fas fa-prescription-bottle oggetto" draggable="true" style="color: #000000;" id="c-32">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; &nbsp; <div class="fas fa-bone oggetto" draggable="true" style="color: #000000;" id="c-42">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; &nbsp; <div class="fas fa-flask oggetto" draggable="true" style="color: #000000;" id="c-22">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; &nbsp; <div class="fas fa-box-open oggetto" draggable="true" style="color: #000000;" id="c-12">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; </section>&nbsp; <section class="oggettoElements">&nbsp; &nbsp; <div class="far fa-newspaper oggetto" draggable="true" style="color: #000000;" id="c-11">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; &nbsp; <div class="fas fa-wine-glass-alt oggetto" draggable="true" style="color: #000000;" id="c-21">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; &nbsp; <div class="fas fa-wine-bottle oggetto" draggable="true" style="color: #000000;" id="c-31">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; &nbsp; <div class="fas fa-apple-alt oggetto" draggable="true" style="color: #000000;" id="c-41">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; </section>&nbsp; <section class="oggettoElements">&nbsp; &nbsp; <div class="far fa-hourglass oggetto" draggable="true" style="color: #000000;" id="c-23">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; &nbsp; <div class="fas fa-drumstick-bite oggetto" draggable="true" style="color: #000000;" id="c-43">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; &nbsp; <div class="far fa-map oggetto" draggable="true" style="color: #000000;" id="c-13">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; &nbsp; <div class="fas fa-utensils oggetto" draggable="true" style="color: #000000;" id="c-33">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; </section>&nbsp; <section class="oggettoElements">&nbsp; &nbsp; <div class="far fa-file oggetto" draggable="true" style="color: #000000;" id="c-14">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; &nbsp; <div class="fas fas fa-cookie-bite oggetto" draggable="true" style="color: #000000;" id="c-44">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; &nbsp; <div class="fas fa-shopping-bag oggetto" draggable="true" style="color: #000000;" id="c-34">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; &nbsp; <div class="fas fa-vial oggetto" draggable="true" style="color: #000000;" id="c-24">&nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; </div>&nbsp; </section></section>

杨魅力

我让它工作,有错误,有以下更改。$(function() {&nbsp; const delay = 3000;&nbsp; // Funzione per iniziare a giocare: quando l'utente preme "gioca" iniziano ad apparire gli oggetti e si avvia un timer&nbsp; function timerApparizioni() {&nbsp; &nbsp; timerOggetti = setInterval(apparizioneOggetto, delay);&nbsp; }&nbsp; let tuttiVisibili = false;&nbsp; // Funzione per prendere un oggetto a caso della tabella e renderlo visibile&nbsp; function apparizioneOggetto(eve) {&nbsp; &nbsp; let oggettoScelto, colonna, riga;&nbsp; &nbsp; tuttiVisibili = !(&nbsp; &nbsp; &nbsp; Array&nbsp; &nbsp; &nbsp; .from(document.querySelectorAll('div[id^="c-"]'))&nbsp; &nbsp; &nbsp; .some((pe_grid) => {&nbsp; &nbsp; &nbsp; &nbsp; return pe_grid.style.visibility !== 'visible';&nbsp; &nbsp; &nbsp; })&nbsp; &nbsp; );&nbsp; &nbsp; if (tuttiVisibili) {&nbsp; &nbsp; &nbsp; document.getElementById('gioca').setAttribute('disabled', 'disabled');&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; do {&nbsp; &nbsp; &nbsp; &nbsp; colonna = 1 + Math.floor(4 * Math.random());&nbsp; &nbsp; &nbsp; &nbsp; riga = 1 + Math.floor(4 * Math.random());&nbsp; &nbsp; &nbsp; &nbsp; oggettoScelto = document.querySelector(`#c-${colonna}${riga}`); // In alternativa: document.getElementById(`c-${colonna}${riga}`)&nbsp; &nbsp; &nbsp; } while (oggettoScelto.style.visibility === 'visible');&nbsp; &nbsp; &nbsp; oggettoScelto.style.visibility = 'visible';&nbsp; &nbsp; }&nbsp; }&nbsp; // funzione per andare alla pagina "menu principale"&nbsp; function GoToMainMenu() {&nbsp; &nbsp; location.href = "mainMenu.html";&nbsp; }&nbsp; // PARTE INIZIALIZZAZIONE gioco&nbsp; // seleziono per classe oggetti e contenitori&nbsp; const oggettoElements = document.querySelectorAll(".oggetto");&nbsp; const contenitoreElements = document.querySelectorAll(".contenitore");&nbsp; // punteggio e vite&nbsp; var vite = 3;&nbsp; var score = 0;&nbsp; const divScore = document.getElementById("score");&nbsp; // PARTE DEI LISTENERS per il gioco&nbsp; // Aggiungo un listener ad ogni oggetto per "ascoltare" quando inizia il drag&nbsp;&nbsp; oggettoElements.forEach(ogg => {&nbsp; &nbsp; ogg.addEventListener("dragstart", dragStart);&nbsp; });&nbsp; // Aggiungo più listener ad ogni elemento per "ascoltare" cosa succede tra l'inizio del drag e la sua fine (drop)&nbsp; contenitoreElements.forEach(ogg => {&nbsp; &nbsp; ogg.addEventListener("dragenter", dragEnter); // "Ascolta" se un oggetto è posizionato sopra ad un contenitore&nbsp; &nbsp; ogg.addEventListener("dragover", dragOver); // "Ascolta" se un oggetto è rilasciato sopra ad un contenitore&nbsp; &nbsp; ogg.addEventListener("dragleave", dragLeave); // "Ascolta" se un oggetto va via da un contenitore&nbsp; &nbsp; ogg.addEventListener("drop", drop); // "Ascolta" se un oggetto viene rilasciato sopra ad un contenitore&nbsp; });&nbsp; // PARTE DEGLI EVENTI DRAG AND DROP per il gioco&nbsp; // Evento "inizio a prendere un oggetto"&nbsp; function dragStart(event) {&nbsp; &nbsp; event.dataTransfer.setData("text", event.target.id);&nbsp; }&nbsp; // Se un oggetto viene posizioneto sopra al contenitore, viene aggiunto "contenitore-over" alla classe del contenitore&nbsp; // Determina l'effetto visivo dell'ingrandirsi di un contenitore quando un oggetto viene trascinato sopra&nbsp; function dragEnter(event) {&nbsp; &nbsp; if (!event.target.classList.contains("dropped")) {&nbsp; &nbsp; &nbsp; event.target.classList.add("contenitore-hover");&nbsp; &nbsp; }&nbsp; }&nbsp; // "Lascia il comando all'itente": evita la gestione di default e impedisce che venga droppato in automatico&nbsp; function dragOver(event) {&nbsp; &nbsp; if (!event.target.classList.contains("dropped")) {&nbsp; &nbsp; &nbsp; event.preventDefault();&nbsp; &nbsp; &nbsp; /* developer.mozilla.org&nbsp; &nbsp; &nbsp; Il metodo preventDefault() dell'interfaccia Event dice all'user agent che se l'evento non viene esplicitamente gestito,&nbsp;&nbsp; &nbsp; &nbsp; la sua azione predefinita non dovrebbe essere presa come normalmente. L'evento continua a propagarsi come al solito,&nbsp;&nbsp; &nbsp; &nbsp; a meno che uno dei suoi listener di eventi non chiami stopPropagation() o stopImmediatePropagation(), uno dei due&nbsp;&nbsp; &nbsp; &nbsp; interrompa la propagazione contemporaneamente. */&nbsp; &nbsp; }&nbsp; }&nbsp; /* Se un oggetto viene posizionato sopra ad un contenitore, esso viene ingrandito dalla funzione dragEnter.&nbsp; Se poi il giocatore "cambia idea", e trascina lontano dal contenitore il suo oggetto, esso deve tornare della misura iniziale&nbsp; Rimuovo "contenitore-over" dalla classe del contenitore */&nbsp; function dragLeave(event) {&nbsp; &nbsp; if (!event.target.classList.contains("dropped")) {&nbsp; &nbsp; &nbsp; event.target.classList.remove("contenitore-hover");&nbsp; &nbsp; }&nbsp; }&nbsp; var counterRightDropped = 0;&nbsp; /* gestione del rilascio/drop: Se l'oggetto viene rilasciato sopra ad un contenitore:&nbsp; - il contenitore ritorna della misura iniziale di default (come in dragLeave, viene rimosso "contenitore-over" dalla classe)&nbsp; - viene fatto un confronto tra l'id parziale dell'oggetto e l'id accettabile dal contenitore.&nbsp; - Se l'abbinamento è giusto (ossia confronto = true), viene aggiunto "dragged" alla classe dell'oggetto, facendo in modo che non sia più disponibile&nbsp;&nbsp; &nbsp; (effetto visivo css) ne' prendibile (draggable=false)&nbsp; - Viene incrementato o decrementato il contatore del punteggio a seconda dell'esisto del confronto */&nbsp; function drop(event) {&nbsp; &nbsp; event.target.classList.remove("contenitore-hover");&nbsp; &nbsp; const idAccettabileContenitore = event.target.getAttribute("idAccettabile"); // Prendo l'id che il contenitore accetta&nbsp; &nbsp; const idOggetto = event.dataTransfer.getData("text"); // Con dragStart ho settato l'attributo text a "event.target.id". Qui lo riprendo (ex: "11")&nbsp; &nbsp; const sottostringaID = idOggetto.substr(0, 3); // Sottostringa dell'id dell'oggetto (ex. da "13" a "1")&nbsp; &nbsp; const vita1 = document.getElementById("vita1");&nbsp; &nbsp; const vita2 = document.getElementById("vita2");&nbsp; &nbsp; const vita3 = document.getElementById("vita3");&nbsp; &nbsp; const giocabutton = document.getElementById('gioca');&nbsp; &nbsp; const nuovaPart = document.getElementById("nuovaPartita");&nbsp; &nbsp; if (sottostringaID === idAccettabileContenitore) {&nbsp; &nbsp; &nbsp; const oggettoGiusto = document.getElementById(idOggetto);&nbsp; &nbsp; &nbsp; oggettoGiusto.classList.add("dragged");&nbsp; &nbsp; &nbsp; oggettoGiusto.setAttribute("draggable", "false");&nbsp; &nbsp; &nbsp; score++;&nbsp; &nbsp; &nbsp; counterRightDropped++;&nbsp; &nbsp; &nbsp; divScore.innerText = "Punteggio: " + score;&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; if (vita1.style.visibility === "visible") {&nbsp; &nbsp; &nbsp; &nbsp; vita1.style.visibility = 'hidden';&nbsp; &nbsp; &nbsp; } else if (vita3.style.visibility === "visible") {&nbsp; &nbsp; &nbsp; &nbsp; vita3.style.visibility = 'hidden';&nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; vita2.style.visibility = 'hidden';&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; score = score - 2;&nbsp; &nbsp; &nbsp; divScore.innerText = "Punteggio: " + score;&nbsp; &nbsp; &nbsp; vite = vite - 1;&nbsp; &nbsp; &nbsp; if (vite == 0) {&nbsp; &nbsp; &nbsp; &nbsp; vita2.style.visibility = 'hidden';&nbsp; &nbsp; &nbsp; &nbsp; giocabutton.style.visibility = 'hidden';&nbsp; &nbsp; &nbsp; &nbsp; setTimeout(function() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert("GAME OVER! \nVite-Alberelli esauriti! \nPunteggio finale: " + score);&nbsp; &nbsp; &nbsp; &nbsp; }, 20)&nbsp; &nbsp; &nbsp; &nbsp; clearInterval(timerOggetti);&nbsp; &nbsp; &nbsp; &nbsp; nuovaPart.style.visibility = 'visible';&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; if (counterRightDropped === 16) {&nbsp; &nbsp; &nbsp; giocabutton.style.visibility = 'hidden';&nbsp; &nbsp; &nbsp; oggettoElements.forEach(ogg => {&nbsp; &nbsp; &nbsp; &nbsp; ogg.setAttribute("class", "fas fa-check-circle oggetto");&nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp; setTimeout(function() {&nbsp; &nbsp; &nbsp; &nbsp; alert("HAI VINTO! \nPunteggio finale: " + score);&nbsp; &nbsp; &nbsp; }, 50)&nbsp; &nbsp; &nbsp; clearInterval(timerOggetti);&nbsp; &nbsp; &nbsp; nuovaPart.style.visibility = 'visible';&nbsp; &nbsp; }&nbsp; }});body {&nbsp; margin: 0;&nbsp; height: 100vh;&nbsp; background: linear-gradient(to right bottom, gold, limegreen);}h1,h2,h3 {&nbsp; margin: 0 0 3px 0;}h1 {&nbsp; text-align: center;&nbsp; color: green;&nbsp; font: bold 52px Helvetica, Arial, Sans-Serif;&nbsp; text-shadow: 1px 1px #fe4902, 2px 2px #fe4902, 3px 3px #fe4902;}h1:hover {&nbsp; position: relative;&nbsp; top: -3px;&nbsp; left: -3px;&nbsp; text-shadow: 1px 1px #fe4902, 2px 2px #fe4902, 3px 3px #fe4902, 4px 4px #fe4902, 5px 5px #fe4902, 6px 6px #fe4902;&nbsp; cursor: pointer;}#time {&nbsp; color: navy;&nbsp; font: bold 24px Helvetica, Arial, Sans-Serif;&nbsp; text-align: center;}#score {&nbsp; color: blue;&nbsp; font: bold 24px Helvetica, Arial, Sans-Serif;&nbsp; text-shadow: 1px 1px #02a2fe, 2px 2px #02a2fe, 3px 3px #02a2fe;&nbsp; text-align: center;}h2 {&nbsp; color: orange;&nbsp; font: bold 34px Helvetica, Arial, Sans-Serif;&nbsp; text-shadow: 1px 1px #02a2fe, 2px 2px #02a2fe, 3px 3px #02a2fe;&nbsp; text-align: center;}h3 {&nbsp; color: navy;&nbsp; font: bold 24px Helvetica, Arial, Sans-Serif;&nbsp; text-shadow: 1px 1px #02a2fe, 2px 2px #02a2fe, 3px 3px #02a2fe;&nbsp; text-align: center;}.oggettoElements {&nbsp; display: flex;&nbsp; justify-content: center;&nbsp; margin: 32px;}.oggetto {&nbsp; height: 80px;&nbsp; width: 80px;&nbsp; display: flex;&nbsp; align-items: center;&nbsp; justify-content: center;&nbsp; font-size: 64px;&nbsp; margin: 0px 8px;&nbsp; cursor: move;&nbsp; transition: opacity 0.2s;}.oggetto:hover {&nbsp; opacity: 0.5;}.contenitore {&nbsp; height: 104px;&nbsp; width: 128px;&nbsp; margin: 16px auto;&nbsp; display: flex;&nbsp; justify-content: center;&nbsp; align-items: center;&nbsp; flex-direction: column;&nbsp; text-align: center;&nbsp; font-size: 64px;&nbsp; font-weight: bold;&nbsp; background-color: #fff;&nbsp; border: 3px dashed #111;&nbsp; transition: border-width 0.2s, transform 0.2s, background-color 0.4s;}.flexcontainer {&nbsp; display: flex;&nbsp; flex-direction: row;}.contenitore span {&nbsp; font-size: 20px;&nbsp; pointer-events: none;&nbsp; /* The element is never the target of pointer events */}.contenitore.contenitore-hover {&nbsp; border-width: 5px;&nbsp; transform: scale(1.3);}.contenitore.dropped {&nbsp; border-style: solid;&nbsp; color: #fff;}.contenitore.dropped i {&nbsp; pointer-events: none;}.oggetto.dragged {&nbsp; user-select: none;&nbsp; opacity: 0.1;&nbsp; cursor: default;}.oggetto.dragged:hover {&nbsp; opacity: 0.1;}.tabella {&nbsp; height: 70%;&nbsp; width: 20%;&nbsp; margin: 16px auto;&nbsp; display: flex;&nbsp; justify-content: center;&nbsp; align-items: center;&nbsp; flex-direction: column;}body>section {&nbsp; display: table;&nbsp; align: center;}section.oggettoElements {&nbsp; display: table-row;}section.oggettoElements>div {&nbsp; display: table-cell;&nbsp; height: 80px;&nbsp; width: 80px;&nbsp; align-items: center;&nbsp; justify-content: center;&nbsp; visibility: hidden;&nbsp; text-align: center;}section.oggettoElements>div>div {&nbsp; display: flex;&nbsp; height: 30px;&nbsp; width: 100px;&nbsp; align-items: center;}div>span {&nbsp; flex: 1;&nbsp; text-align: center}#gioca {&nbsp; text-align: center;&nbsp; cursor: pointer;&nbsp; visibility: visible;}.tree {&nbsp; height: 50px;&nbsp; width: 50px;&nbsp; margin: 16px auto;&nbsp; display: flex;&nbsp; justify-content: center;&nbsp; align-items: center;&nbsp; flex-direction: column;&nbsp; text-align: center;&nbsp; font-size: 40px;&nbsp; font-weight: bold;}.flexalberi {&nbsp; display: flex;&nbsp; flex-direction: row;}#nuovaPartita {&nbsp; cursor: pointer;}<!DOCTYPE html><html><head>&nbsp; <meta charset="UTF-8">&nbsp; <title>GAME</title>&nbsp; <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.9.0/css/all.css">&nbsp; <link rel="stylesheet" type="text/css" href="CSSTEST.css">&nbsp; <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs=" crossorigin="anonymous"></script>&nbsp; <script type="text/javascript" src="JSTEST.js"></script></head><body>&nbsp; <div onClick="GoToMainMenu();">&nbsp; &nbsp; <h1>Trash CAN or trash CAN't?</h1>&nbsp; </div>&nbsp; <div id="gioca" onclick="timerApparizioni();">&nbsp; &nbsp; <h2><u>GIOCA</u>&nbsp; &nbsp; &nbsp; <h3>&nbsp; </div>&nbsp; <div>&nbsp; &nbsp; <h3>Abbina il rifiuto al bidone giusto!</h3>&nbsp; </div>&nbsp; <div id="nuovaPartita" onClick="history.go(0);" style="visibility:hidden;">&nbsp; &nbsp; <h2>GIOCA ANCORA</h2>&nbsp; </div>&nbsp; <div id="score">Punteggio: 0</div>&nbsp; <!-- section contenente le vite-alberelli -->&nbsp; <section class="flexalberi">&nbsp; &nbsp; <i class="fas fa-tree tree" id="vita1" style="color: #008000; visibility:visible;"></i>&nbsp; &nbsp; <i class="fas fa-tree tree" id="vita2" style="color: #008000; visibility:visible;"></i>&nbsp; &nbsp; <i class="fas fa-tree tree" id="vita3" style="color: #008000; visibility:visible;"></i>&nbsp; </section>&nbsp; <!-- section contenente i contenitori (fissi) in cui andranno trascinati gli oggetti -->&nbsp; <section class="contenitore-elements flexcontainer">&nbsp; &nbsp; <div class="fas fa-trash contenitore" idAccettabile="c-1" style="color: #0000FF;"><span>Carta</span></div>&nbsp; &nbsp; <div class="fas fa-trash contenitore" idAccettabile="c-2" style="color: #008000;"><span>Vetro</span></div>&nbsp; &nbsp; <div class="fas fa-trash contenitore" idAccettabile="c-3" style="color: #FFD700;"><span>Plastica</span></div>&nbsp; &nbsp; <div class="fas fa-trash contenitore" idAccettabile="c-4" style="color: #8B4513;"><span>Organico</span></div>&nbsp; </section>&nbsp; <!-- Tabella contenente gli oggetti che appariranno sullo schermo durante la partita -->&nbsp; <section class="tabella">&nbsp; &nbsp; <section class="oggettoElements">&nbsp; &nbsp; &nbsp; <div class="fas fa-prescription-bottle oggetto" draggable="true" style="color: #000000;" id="c-32">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; <div class="fas fa-bone oggetto" draggable="true" style="color: #000000;" id="c-42">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; <div class="fas fa-flask oggetto" draggable="true" style="color: #000000;" id="c-22">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; <div class="fas fa-box-open oggetto" draggable="true" style="color: #000000;" id="c-12">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; </section>&nbsp; &nbsp; <section class="oggettoElements">&nbsp; &nbsp; &nbsp; <div class="far fa-newspaper oggetto" draggable="true" style="color: #000000;" id="c-11">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; <div class="fas fa-wine-glass-alt oggetto" draggable="true" style="color: #000000;" id="c-21">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; <div class="fas fa-wine-bottle oggetto" draggable="true" style="color: #000000;" id="c-31">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; <div class="fas fa-apple-alt oggetto" draggable="true" style="color: #000000;" id="c-41">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; </section>&nbsp; &nbsp; <section class="oggettoElements">&nbsp; &nbsp; &nbsp; <div class="far fa-hourglass oggetto" draggable="true" style="color: #000000;" id="c-23">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; <div class="fas fa-drumstick-bite oggetto" draggable="true" style="color: #000000;" id="c-43">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; <div class="far fa-map oggetto" draggable="true" style="color: #000000;" id="c-13">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; <div class="fas fa-utensils oggetto" draggable="true" style="color: #000000;" id="c-33">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; </section>&nbsp; &nbsp; <section class="oggettoElements">&nbsp; &nbsp; &nbsp; <div class="far fa-file oggetto" draggable="true" style="color: #000000;" id="c-14">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; <div class="fas fas fa-cookie-bite oggetto" draggable="true" style="color: #000000;" id="c-44">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; <div class="fas fa-shopping-bag oggetto" draggable="true" style="color: #000000;" id="c-34">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; <div class="fas fa-vial oggetto" draggable="true" style="color: #000000;" id="c-24">&nbsp; &nbsp; &nbsp; &nbsp; <div><span></span></div>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; </section>&nbsp; </section></body></html>基本上是通过调用jQuery的文档就绪函数。$(function() {});在使用javascript访问它们之前,您必须确保dom有时间完成加载页面上的所有元素。我还删除了以下注释代码,因为它对javascript语法进行了不正确的注释。// ORIGINALE prof:<!-- $(document).ready(function(){ -->&nbsp; &nbsp; <!-- $('#runme').click(function(){ -->&nbsp; &nbsp; &nbsp; &nbsp; <!-- let SIZE = 4 -->&nbsp; &nbsp; &nbsp; &nbsp; <!-- let r = (Math.floor(Math.random() * SIZE)) + 1; -->&nbsp; &nbsp; &nbsp; &nbsp; <!-- let c = (Math.floor(Math.random() * SIZE)) + 1; -->&nbsp; &nbsp; &nbsp; &nbsp; <!-- $( "section.oggettoElements:nth-of-type("+r+") i:nth-child("+c+")" ).css( "color", "#FF0000" ); -->&nbsp; &nbsp; <!-- }); --><!-- }); -->
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答