gpt4 book ai didi

javascript - 将 JavaScript 代码包含到 HTML 中。并非全部都在工作

转载 作者:行者123 更新时间:2023-12-01 08:29:42 25 4
gpt4 key购买 nike

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

<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
<title>GAME</title>

<link rel="stylesheet"
href="https://use.fontawesome.com/releases/v5.9.0/css/all.css">
<script src="jquery-3.5.0.js"></script>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
integrity="sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs="
crossorigin="anonymous"></script>

<style>
body {
margin: 0;
height: 100vh;
background: linear-gradient(to right bottom, gold, limegreen);
}

h1, h2, h3 {
margin: 0 0 3px 0;
}

h1 {
text-align: center;
color: green;
font: bold 52px Helvetica, Arial, Sans-Serif;
text-shadow: 1px 1px #fe4902, 2px 2px #fe4902, 3px 3px #fe4902;
}

h1:hover {
position: relative;
top: -3px;
left: -3px;
text-shadow: 1px 1px #fe4902, 2px 2px #fe4902, 3px 3px #fe4902, 4px 4px #fe4902, 5px 5px #fe4902, 6px 6px #fe4902;
cursor: pointer;
}

#time {
color: navy;
font: bold 24px Helvetica, Arial, Sans-Serif;
text-align: center;
}

#score {
color: blue;
font: bold 24px Helvetica, Arial, Sans-Serif;
text-shadow: 1px 1px #02a2fe, 2px 2px #02a2fe, 3px 3px #02a2fe;
text-align: center;
}

h2 {
color: orange;
font: bold 34px Helvetica, Arial, Sans-Serif;
text-shadow: 1px 1px #02a2fe, 2px 2px #02a2fe, 3px 3px #02a2fe;
text-align: center;
}

h3 {
color: navy;
font: bold 24px Helvetica, Arial, Sans-Serif;
text-shadow: 1px 1px #02a2fe, 2px 2px #02a2fe, 3px 3px #02a2fe;
text-align: center;
}

.oggettoElements {
display: flex;
justify-content: center;
margin: 32px;
}

.oggetto {
height: 80px;
width: 80px;
display: flex;
align-items: center;
justify-content: center;
font-size: 64px;
margin: 0px 8px;
cursor: move;
transition: opacity 0.2s;
}

.oggetto:hover {
opacity: 0.5;
}

.contenitore {
height: 104px;
width: 128px;
margin: 16px auto;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
text-align: center;
font-size: 64px;
font-weight: bold;
background-color: #fff;
border: 3px dashed #111;
transition: border-width 0.2s, transform 0.2s, background-color 0.4s;
}

.flexcontainer {
display: flex;
flex-direction: row;
}

.contenitore span {
font-size: 20px;
pointer-events: none;
}

.contenitore.contenitore-hover {
border-width: 5px;
transform: scale(1.3);
}

.contenitore.dropped {
border-style: solid;
color: #fff;
}

.contenitore.dropped i {
pointer-events: none;
}

.oggetto.dragged {
user-select: none;
opacity: 0.1;
cursor: default;
}

.oggetto.dragged:hover {
opacity: 0.1;
}

.tabella {
height: 70%;
width: 20%;
margin: 16px auto;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}

body > section {
display: table;
align: center;
}

section.oggettoElements {
display: table-row;
}

section.oggettoElements > div {
display: table-cell;
height: 80px;
width: 80px;
align-items: center;
justify-content: center;
visibility: hidden;
text-align: center;
}

section.oggettoElements > div > div {
display: flex;
height: 30px;
width: 100px;
align-items: center;
}

div > span {
flex: 1;
text-align: center
}

#gioca {
text-align: center;
cursor: pointer;
visibility: visible;
}

.tree {
height: 50px;
width: 50px;
margin: 16px auto;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
text-align: center;
font-size: 40px;
font-weight: bold;
}

.flexalberi {
display: flex;
flex-direction: row;
}

#nuovaPartita {
cursor: pointer;
}
</style>
</head>

<body>

<div onClick="GoToMainMenu();"><h1>Trash CAN or trash CAN't?</h1></div>
<div id="gioca" onclick="timerApparizioni();">
<h2><u>GIOCA</u>
<h3>
</div>

<div><h3>Abbina il rifiuto al bidone giusto!</h3></div>

<div id="nuovaPartita" onClick="history.go(0);" style="visibility:hidden;"><h2>
GIOCA ANCORA</h2></div>
<div id="score">Punteggio: 0</div>

<section class="flexalberi">
<i class="fas fa-tree tree" id="vita1"
style="color: #008000; visibility:visible;"></i>
<i class="fas fa-tree tree" id="vita2"
style="color: #008000; visibility:visible;"></i>
<i class="fas fa-tree tree" id="vita3"
style="color: #008000; visibility:visible;"></i>
</section>

<section class="contenitore-elements flexcontainer">
<div class="fas fa-trash contenitore" idAccettabile="c-1"
style="color: #0000FF;"><span>Carta</span></div>
<div class="fas fa-trash contenitore" idAccettabile="c-2"
style="color: #008000;"><span>Vetro</span></div>
<div class="fas fa-trash contenitore" idAccettabile="c-3"
style="color: #FFD700;"><span>Plastica</span></div>
<div class="fas fa-trash contenitore" idAccettabile="c-4"
style="color: #8B4513;"><span>Organico</span></div>
</section>

<section class="tabella">
<section class="oggettoElements">
<div class="fas fa-prescription-bottle oggetto" draggable="true"
style="color: #000000;" id="c-32">
<div><span></span></div>
</div>
<div class="fas fa-bone oggetto" draggable="true" style="color: #000000;"
id="c-42">
<div><span></span></div>
</div>
<div class="fas fa-flask oggetto" draggable="true" style="color: #000000;"
id="c-22">
<div><span></span></div>
</div>
<div class="fas fa-box-open oggetto" draggable="true"
style="color: #000000;" id="c-12">
<div><span></span></div>
</div>
</section>
<section class="oggettoElements">
<div class="far fa-newspaper oggetto" draggable="true"
style="color: #000000;" id="c-11">
<div><span></span></div>
</div>
<div class="fas fa-wine-glass-alt oggetto" draggable="true"
style="color: #000000;" id="c-21">
<div><span></span></div>
</div>
<div class="fas fa-wine-bottle oggetto" draggable="true"
style="color: #000000;" id="c-31">
<div><span></span></div>
</div>
<div class="fas fa-apple-alt oggetto" draggable="true"
style="color: #000000;" id="c-41">
<div><span></span></div>
</div>
</section>
<section class="oggettoElements">
<div class="far fa-hourglass oggetto" draggable="true"
style="color: #000000;" id="c-23">
<div><span></span></div>
</div>
<div class="fas fa-drumstick-bite oggetto" draggable="true"
style="color: #000000;" id="c-43">
<div><span></span></div>
</div>
<div class="far fa-map oggetto" draggable="true" style="color: #000000;"
id="c-13">
<div><span></span></div>
</div>
<div class="fas fa-utensils oggetto" draggable="true"
style="color: #000000;" id="c-33">
<div><span></span></div>
</div>
</section>
<section class="oggettoElements">
<div class="far fa-file oggetto" draggable="true" style="color: #000000;"
id="c-14">
<div><span></span></div>
</div>
<div class="fas fas fa-cookie-bite oggetto" draggable="true"
style="color: #000000;" id="c-44">
<div><span></span></div>
</div>
<div class="fas fa-shopping-bag oggetto" draggable="true"
style="color: #000000;" id="c-34">
<div><span></span></div>
</div>
<div class="fas fa-vial oggetto" draggable="true" style="color: #000000;"
id="c-24">
<div><span></span></div>
</div>
</section>
</section>


<script>
const delay = 3000;

function timerApparizioni () {
timerOggetti = setInterval(apparizioneOggetto, delay);
}

let tuttiVisibili = false;

function apparizioneOggetto (eve) {
let oggettoScelto, colonna, riga;
tuttiVisibili = !(
Array
.from(document.querySelectorAll('div[id^="c-"]'))
.some((pe_grid) => { return pe_grid.style.visibility !== 'visible'; })
);
if (tuttiVisibili) {
document.getElementById('gioca').setAttribute('disabled', 'disabled');
} else {
do {
colonna = 1 + Math.floor(4 * Math.random());
riga = 1 + Math.floor(4 * Math.random());
oggettoScelto = document.querySelector(`#c-${colonna}${riga}`); // In alternativa: document.getElementById(`c-${colonna}${riga}`)
} while (oggettoScelto.style.visibility === 'visible');
oggettoScelto.style.visibility = 'visible';
}
}

function GoToMainMenu () {
location.href = 'mainMenu.html';
}

const oggettoElements = document.querySelectorAll('.oggetto');
const contenitoreElements = document.querySelectorAll('.contenitore');

var vite = 3;
var score = 0;
const divScore = document.getElementById('score');

oggettoElements.forEach(ogg => {
ogg.addEventListener('dragstart', dragStart);
});

contenitoreElements.forEach(ogg => {
ogg.addEventListener('dragenter', dragEnter);
ogg.addEventListener('dragover', dragOver);
ogg.addEventListener('dragleave', dragLeave);
ogg.addEventListener('drop', drop);
});

function dragStart (event) {
event.dataTransfer.setData('text', event.target.id);
}

function dragEnter (event) {
if (!event.target.classList.contains('dropped')) {
event.target.classList.add('contenitore-hover');
}
}

function dragOver (event) {
if (!event.target.classList.contains('dropped')) {
event.preventDefault();
}
}

function dragLeave (event) {
if (!event.target.classList.contains('dropped')) {
event.target.classList.remove('contenitore-hover');
}
}

var counterRightDropped = 0;

function drop (event) {

event.target.classList.remove('contenitore-hover');
const idAccettabileContenitore = event.target.getAttribute('idAccettabile');
const idOggetto = event.dataTransfer.getData('text');
const sottostringaID = idOggetto.substr(0, 3);

const vita1 = document.getElementById('vita1');
const vita2 = document.getElementById('vita2');
const vita3 = document.getElementById('vita3');

const giocabutton = document.getElementById('gioca');
const nuovaPart = document.getElementById('nuovaPartita');

if (sottostringaID === idAccettabileContenitore) {
const oggettoGiusto = document.getElementById(idOggetto);
oggettoGiusto.classList.add('dragged');
oggettoGiusto.setAttribute('draggable', 'false');
score++;
counterRightDropped++;
divScore.innerText = 'Punteggio: ' + score;
} else {

if (vita1.style.visibility === 'visible') {
vita1.style.visibility = 'hidden';
} else if (vita3.style.visibility === 'visible') {
vita3.style.visibility = 'hidden';
} else {
vita2.style.visibility = 'hidden';
}

score = score - 2;
divScore.innerText = 'Punteggio: ' + score;
vite = vite - 1;

if (vite == 0) {
vita2.style.visibility = 'hidden';

giocabutton.style.visibility = 'hidden';
setTimeout(function () {
alert('GAME OVER! \nVite-Alberelli esauriti! \nPunteggio finale: ' + score);
}, 20);
clearInterval(timerOggetti);

nuovaPart.style.visibility = 'visible';
}
}

if (counterRightDropped === 16) {
giocabutton.style.visibility = 'hidden';
oggettoElements.forEach(ogg => {
ogg.setAttribute('class', 'fas fa-check-circle oggetto');
});
setTimeout(function () {
alert('HAI VINTO! \nPunteggio finale: ' + score);
}, 50);
clearInterval(timerOggetti);

nuovaPart.style.visibility = 'visible';
}
}

</script>

</body>
</html>

我尝试将所有脚本部分放入名为 JSTEST.js 的 .js 文件中,然后将其插入 HTML 文件中:

<script src="jquery-3.5.0.js"></script>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
integrity="sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs="
crossorigin="anonymous"></script>
<script type="text/javascript" src="JSTEST.js"></script>

问题是,它不再起作用了。它只做部分事情。

所以现在我有:

<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
<title>GAME</title>

<link rel="stylesheet"
href="https://use.fontawesome.com/releases/v5.9.0/css/all.css">
<link rel="stylesheet" type="text/css" href="CSSTEST.css">
<script src="jquery-3.5.0.js"></script>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
integrity="sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs="
crossorigin="anonymous"></script>
<script type="text/javascript" src="JSTEST.js"></script>

</head>

<body>

<div onClick="GoToMainMenu();"><h1>Trash CAN or trash CAN't?</h1></div>
<div id="gioca" onclick="timerApparizioni();">
<h2><u>GIOCA</u>
<h3>
</div>

<div><h3>Abbina il rifiuto al bidone giusto!</h3></div>

<div id="nuovaPartita" onClick="history.go(0);" style="visibility:hidden;"><h2>
GIOCA ANCORA</h2></div>
<div id="score">Punteggio: 0</div>

<section class="flexalberi">
<i class="fas fa-tree tree" id="vita1"
style="color: #008000; visibility:visible;"></i>
<i class="fas fa-tree tree" id="vita2"
style="color: #008000; visibility:visible;"></i>
<i class="fas fa-tree tree" id="vita3"
style="color: #008000; visibility:visible;"></i>
</section>

<section class="contenitore-elements flexcontainer">
<div class="fas fa-trash contenitore" idAccettabile="c-1"
style="color: #0000FF;"><span>Carta</span></div>
<div class="fas fa-trash contenitore" idAccettabile="c-2"
style="color: #008000;"><span>Vetro</span></div>
<div class="fas fa-trash contenitore" idAccettabile="c-3"
style="color: #FFD700;"><span>Plastica</span></div>
<div class="fas fa-trash contenitore" idAccettabile="c-4"
style="color: #8B4513;"><span>Organico</span></div>
</section>

<section class="tabella">
<section class="oggettoElements">
<div class="fas fa-prescription-bottle oggetto" draggable="true"
style="color: #000000;" id="c-32">
<div><span></span></div>
</div>
<div class="fas fa-bone oggetto" draggable="true" style="color: #000000;"
id="c-42">
<div><span></span></div>
</div>
<div class="fas fa-flask oggetto" draggable="true" style="color: #000000;"
id="c-22">
<div><span></span></div>
</div>
<div class="fas fa-box-open oggetto" draggable="true"
style="color: #000000;" id="c-12">
<div><span></span></div>
</div>
</section>
<section class="oggettoElements">
<div class="far fa-newspaper oggetto" draggable="true"
style="color: #000000;" id="c-11">
<div><span></span></div>
</div>
<div class="fas fa-wine-glass-alt oggetto" draggable="true"
style="color: #000000;" id="c-21">
<div><span></span></div>
</div>
<div class="fas fa-wine-bottle oggetto" draggable="true"
style="color: #000000;" id="c-31">
<div><span></span></div>
</div>
<div class="fas fa-apple-alt oggetto" draggable="true"
style="color: #000000;" id="c-41">
<div><span></span></div>
</div>
</section>
<section class="oggettoElements">
<div class="far fa-hourglass oggetto" draggable="true"
style="color: #000000;" id="c-23">
<div><span></span></div>
</div>
<div class="fas fa-drumstick-bite oggetto" draggable="true"
style="color: #000000;" id="c-43">
<div><span></span></div>
</div>
<div class="far fa-map oggetto" draggable="true" style="color: #000000;"
id="c-13">
<div><span></span></div>
</div>
<div class="fas fa-utensils oggetto" draggable="true"
style="color: #000000;" id="c-33">
<div><span></span></div>
</div>
</section>
<section class="oggettoElements">
<div class="far fa-file oggetto" draggable="true" style="color: #000000;"
id="c-14">
<div><span></span></div>
</div>
<div class="fas fas fa-cookie-bite oggetto" draggable="true"
style="color: #000000;" id="c-44">
<div><span></span></div>
</div>
<div class="fas fa-shopping-bag oggetto" draggable="true"
style="color: #000000;" id="c-34">
<div><span></span></div>
</div>
<div class="fas fa-vial oggetto" draggable="true" style="color: #000000;"
id="c-24">
<div><span></span></div>
</div>
</section>
</section>

</body>
</html>
}

<script src="jquery-3.5.0.js"></script>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
integrity="sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs="
crossorigin="anonymous"></script>
<script>
const delay = 3000;

function timerApparizioni () {
timerOggetti = setInterval(apparizioneOggetto, delay);
}

let tuttiVisibili = false;

function apparizioneOggetto (eve) {
let oggettoScelto, colonna, riga;
tuttiVisibili = !(
Array
.from(document.querySelectorAll('div[id^="c-"]'))
.some((pe_grid) => { return pe_grid.style.visibility !== 'visible'; })
);
if (tuttiVisibili) {
document.getElementById('gioca').setAttribute('disabled', 'disabled');
} else {
do {
colonna = 1 + Math.floor(4 * Math.random());
riga = 1 + Math.floor(4 * Math.random());
oggettoScelto = document.querySelector(`#c-${colonna}${riga}`); // In alternativa: document.getElementById(`c-${colonna}${riga}`)
} while (oggettoScelto.style.visibility === 'visible');
oggettoScelto.style.visibility = 'visible';
}
}

function GoToMainMenu () {
location.href = 'mainMenu.html';
}

const oggettoElements = document.querySelectorAll('.oggetto');
const contenitoreElements = document.querySelectorAll('.contenitore');

var vite = 3;
var score = 0;
const divScore = document.getElementById('score');

oggettoElements.forEach(ogg => {
ogg.addEventListener('dragstart', dragStart);
});

contenitoreElements.forEach(ogg => {
ogg.addEventListener('dragenter', dragEnter);
ogg.addEventListener('dragover', dragOver);
ogg.addEventListener('dragleave', dragLeave);
ogg.addEventListener('drop', drop);
});

function dragStart (event) {
event.dataTransfer.setData('text', event.target.id);
}

function dragEnter (event) {
if (!event.target.classList.contains('dropped')) {
event.target.classList.add('contenitore-hover');
}
}

function dragOver (event) {
if (!event.target.classList.contains('dropped')) {
event.preventDefault();
}
}

function dragLeave (event) {
if (!event.target.classList.contains('dropped')) {
event.target.classList.remove('contenitore-hover');
}
}

var counterRightDropped = 0;

function drop (event) {

event.target.classList.remove('contenitore-hover');
const idAccettabileContenitore = event.target.getAttribute('idAccettabile');
const idOggetto = event.dataTransfer.getData('text');
const sottostringaID = idOggetto.substr(0, 3);

const vita1 = document.getElementById('vita1');
const vita2 = document.getElementById('vita2');
const vita3 = document.getElementById('vita3');

const giocabutton = document.getElementById('gioca');
const nuovaPart = document.getElementById('nuovaPartita');

if (sottostringaID === idAccettabileContenitore) {
const oggettoGiusto = document.getElementById(idOggetto);
oggettoGiusto.classList.add('dragged');
oggettoGiusto.setAttribute('draggable', 'false');
score++;
counterRightDropped++;
divScore.innerText = 'Punteggio: ' + score;
} else {

if (vita1.style.visibility === 'visible') {
vita1.style.visibility = 'hidden';
} else if (vita3.style.visibility === 'visible') {
vita3.style.visibility = 'hidden';
} else {
vita2.style.visibility = 'hidden';
}

score = score - 2;
divScore.innerText = 'Punteggio: ' + score;
vite = vite - 1;

if (vite == 0) {
vita2.style.visibility = 'hidden';

giocabutton.style.visibility = 'hidden';
setTimeout(function () {
alert('GAME OVER! \nVite-Alberelli esauriti! \nPunteggio finale: ' + score);
}, 20);
clearInterval(timerOggetti);

nuovaPart.style.visibility = 'visible';
}
}

if (counterRightDropped === 16) {
giocabutton.style.visibility = 'hidden';
oggettoElements.forEach(ogg => {
ogg.setAttribute('class', 'fas fa-check-circle oggetto');
});
setTimeout(function () {
alert('HAI VINTO! \nPunteggio finale: ' + score);
}, 50);
clearInterval(timerOggetti);

nuovaPart.style.visibility = 'visible';
}
}
</script>

我做错了什么?

ps。如果您对代码还有任何建议,请写下来;)

最佳答案

啊啊,游戏需要全屏才能看到垃圾

查看不同的 Pane 。 css Pane 可以放入 css 文件中,JS Pane 内容可以放入外部 JS 文件中。这里根本不需要 jQuery

链接标签和外部 JS 脚本进入头部,外部 CSS 文件的链接也进入头部

我不明白“runme”是做什么的,它似乎不重要

window.addEventListener("load", function() {
document.getElementById("gioca").addEventListener("click", timerApparizioni);
if (document.getElementById("runme")) {
document.getElementById("runme").addEventListener("click", function() {
let SIZE = 4;
let r = (Math.floor(Math.random() * SIZE)) + 1;
let c = (Math.floor(Math.random() * SIZE)) + 1;
document.querySelector("section.oggettoElements:nth-of-type(" + r + ") i:nth-child(" + c + ")").style.color = "#FF0000";
})
}
})

const delay = 3000;

// Funzione per iniziare a giocare: quando l'utente preme "gioca" iniziano ad apparire gli oggetti e si avvia un timer
function timerApparizioni() {
timerOggetti = setInterval(apparizioneOggetto, delay);
}

let tuttiVisibili = false;

// Funzione per prendere un oggetto a caso della tabella e renderlo visibile
function apparizioneOggetto(eve) {
let oggettoScelto, colonna, riga;
tuttiVisibili = !(
Array
.from(document.querySelectorAll('div[id^="c-"]'))
.some((pe_grid) => {
return pe_grid.style.visibility !== 'visible';
})
);
if (tuttiVisibili) {
document.getElementById('gioca').setAttribute('disabled', 'disabled');
} else {
do {
colonna = 1 + Math.floor(4 * Math.random());
riga = 1 + Math.floor(4 * Math.random());
oggettoScelto = document.querySelector(`#c-${colonna}${riga}`); // In alternativa: document.getElementById(`c-${colonna}${riga}`)
} while (oggettoScelto.style.visibility === 'visible');
oggettoScelto.style.visibility = 'visible';
}
}

window.addEventListener("load", function() {
document.getElementById("gioca").addEventListener("click", timerApparizioni);
if (document.getElementById("runme")) {
document.getElementById("runme").addEventListener("click", function() {
let SIZE = 4;
let r = (Math.floor(Math.random() * SIZE)) + 1;
let c = (Math.floor(Math.random() * SIZE)) + 1;
document.querySelector("section.oggettoElements:nth-of-type(" + r + ") i:nth-child(" + c + ")").style.color = "#FF0000";
})
}
})


// funzione per andare alla pagina "menu principale"
function GoToMainMenu() {
location.href = "mainMenu.html";
}


// PARTE INIZIALIZZAZIONE gioco

// seleziono per classe oggetti e contenitori
const oggettoElements = document.querySelectorAll(".oggetto");
const contenitoreElements = document.querySelectorAll(".contenitore");

// punteggio e vite
var 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
oggettoElements.forEach(ogg => {
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 => {
ogg.addEventListener("dragenter", dragEnter); // "Ascolta" se un oggetto è posizionato sopra ad un contenitore
ogg.addEventListener("dragover", dragOver); // "Ascolta" se un oggetto è rilasciato sopra ad un contenitore
ogg.addEventListener("dragleave", dragLeave); // "Ascolta" se un oggetto va via da un contenitore
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) {
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 sopra
function dragEnter(event) {
if (!event.target.classList.contains("dropped")) {
event.target.classList.add("contenitore-hover");
}
}

// "Lascia il comando all'itente": evita la gestione di default e impedisce che venga droppato in automatico
function dragOver(event) {
if (!event.target.classList.contains("dropped")) {
event.preventDefault();
/* developer.mozilla.org
Il metodo preventDefault() dell'interfaccia Event dice all'user agent che se l'evento non viene esplicitamente gestito,
la sua azione predefinita non dovrebbe essere presa come normalmente. L'evento continua a propagarsi come al solito,
a meno che uno dei suoi listener di eventi non chiami stopPropagation() o stopImmediatePropagation(), uno dei due
interrompa la propagazione contemporaneamente. */
}
}

/* 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 iniziale
Rimuovo "contenitore-over" dalla classe del contenitore */
function dragLeave(event) {
if (!event.target.classList.contains("dropped")) {
event.target.classList.remove("contenitore-hover");
}
}


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
(effetto visivo css) ne' prendibile (draggable=false)
- Viene incrementato o decrementato il contatore del punteggio a seconda dell'esisto del confronto */
function drop(event) {

event.target.classList.remove("contenitore-hover");
const idAccettabileContenitore = event.target.getAttribute("idAccettabile"); // Prendo l'id che il contenitore accetta
const idOggetto = event.dataTransfer.getData("text"); // Con dragStart ho settato l'attributo text a "event.target.id". Qui lo riprendo (ex: "11")
const sottostringaID = idOggetto.substr(0, 3); // Sottostringa dell'id dell'oggetto (ex. da "13" a "1")

const vita1 = document.getElementById("vita1");
const vita2 = document.getElementById("vita2");
const vita3 = document.getElementById("vita3");

const giocabutton = document.getElementById('gioca');
const nuovaPart = document.getElementById("nuovaPartita");

if (sottostringaID === idAccettabileContenitore) {
const oggettoGiusto = document.getElementById(idOggetto);
oggettoGiusto.classList.add("dragged");
oggettoGiusto.setAttribute("draggable", "false");
score++;
counterRightDropped++;
divScore.innerText = "Punteggio: " + score;
} else {

if (vita1.style.visibility === "visible") {
vita1.style.visibility = 'hidden';
} else if (vita3.style.visibility === "visible") {
vita3.style.visibility = 'hidden';
} else {
vita2.style.visibility = 'hidden';
}

score = score - 2;
divScore.innerText = "Punteggio: " + score;
vite = vite - 1;

if (vite == 0) {
vita2.style.visibility = 'hidden';

giocabutton.style.visibility = 'hidden';
setTimeout(function() {
alert("GAME OVER! \nVite-Alberelli esauriti! \nPunteggio finale: " + score);
}, 20)
clearInterval(timerOggetti);

nuovaPart.style.visibility = 'visible';
}
}

if (counterRightDropped === 16) {
giocabutton.style.visibility = 'hidden';
oggettoElements.forEach(ogg => {
ogg.setAttribute("class", "fas fa-check-circle oggetto");
});
setTimeout(function() {
alert("HAI VINTO! \nPunteggio finale: " + score);
}, 50)
clearInterval(timerOggetti);

nuovaPart.style.visibility = 'visible';
}
}
body {
margin: 0;
height: 100vh;
background: linear-gradient(to right bottom, gold, limegreen);
}

h1,
h2,
h3 {
margin: 0 0 3px 0;
}

h1 {
text-align: center;
color: green;
font: bold 52px Helvetica, Arial, Sans-Serif;
text-shadow: 1px 1px #fe4902, 2px 2px #fe4902, 3px 3px #fe4902;
}

h1:hover {
position: relative;
top: -3px;
left: -3px;
text-shadow: 1px 1px #fe4902, 2px 2px #fe4902, 3px 3px #fe4902, 4px 4px #fe4902, 5px 5px #fe4902, 6px 6px #fe4902;
cursor: pointer;
}

#time {
color: navy;
font: bold 24px Helvetica, Arial, Sans-Serif;
text-align: center;
}

#score {
color: blue;
font: bold 24px Helvetica, Arial, Sans-Serif;
text-shadow: 1px 1px #02a2fe, 2px 2px #02a2fe, 3px 3px #02a2fe;
text-align: center;
}

h2 {
color: orange;
font: bold 34px Helvetica, Arial, Sans-Serif;
text-shadow: 1px 1px #02a2fe, 2px 2px #02a2fe, 3px 3px #02a2fe;
text-align: center;
}

h3 {
color: navy;
font: bold 24px Helvetica, Arial, Sans-Serif;
text-shadow: 1px 1px #02a2fe, 2px 2px #02a2fe, 3px 3px #02a2fe;
text-align: center;
}

.oggettoElements {
display: flex;
justify-content: center;
margin: 32px;
}

.oggetto {
height: 80px;
width: 80px;
display: flex;
align-items: center;
justify-content: center;
font-size: 64px;
margin: 0px 8px;
cursor: move;
transition: opacity 0.2s;
}

.oggetto:hover {
opacity: 0.5;
}

.contenitore {
height: 104px;
width: 128px;
margin: 16px auto;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
text-align: center;
font-size: 64px;
font-weight: bold;
background-color: #fff;
border: 3px dashed #111;
transition: border-width 0.2s, transform 0.2s, background-color 0.4s;
}

.flexcontainer {
display: flex;
flex-direction: row;
}

.contenitore span {
font-size: 20px;
pointer-events: none;
/* The element is never the target of pointer events */
}

.contenitore.contenitore-hover {
border-width: 5px;
transform: scale(1.3);
}

.contenitore.dropped {
border-style: solid;
color: #fff;
}

.contenitore.dropped i {
pointer-events: none;
}

.oggetto.dragged {
user-select: none;
opacity: 0.1;
cursor: default;
}

.oggetto.dragged:hover {
opacity: 0.1;
}

.tabella {
height: 70%;
width: 20%;
margin: 16px auto;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}

body>section {
display: table;
align: center;
}

section.oggettoElements {
display: table-row;
}

section.oggettoElements>div {
display: table-cell;
height: 80px;
width: 80px;
align-items: center;
justify-content: center;
visibility: hidden;
text-align: center;
}

section.oggettoElements>div>div {
display: flex;
height: 30px;
width: 100px;
align-items: center;
}

div>span {
flex: 1;
text-align: center
}

#gioca {
text-align: center;
cursor: pointer;
visibility: visible;
}

.tree {
height: 50px;
width: 50px;
margin: 16px auto;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
text-align: center;
font-size: 40px;
font-weight: bold;
}

.flexalberi {
display: flex;
flex-direction: row;
}

#nuovaPartita {
cursor: pointer;
}
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.9.0/css/all.css">
<div onClick="GoToMainMenu();">
<h1>Trash CAN or trash CAN't?</h1>
</div>
<div id="gioca">
<h2><u>GIOCA</u>
<h2>
</div>

<div>
<h3>Abbina il rifiuto al bidone giusto!</h3>
</div>


<div id="nuovaPartita" onClick="history.go(0);" style="visibility:hidden;">
<h2>GIOCA ANCORA</h2>
</div>
<div id="score">Punteggio: 0</div>

<!-- section contenente le vite-alberelli -->
<section class="flexalberi">
<i class="fas fa-tree tree" id="vita1" style="color: #008000; visibility:visible;"></i>
<i class="fas fa-tree tree" id="vita2" style="color: #008000; visibility:visible;"></i>
<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">
<div class="fas fa-trash contenitore" idAccettabile="c-1" style="color: #0000FF;"><span>Carta</span></div>
<div class="fas fa-trash contenitore" idAccettabile="c-2" style="color: #008000;"><span>Vetro</span></div>
<div class="fas fa-trash contenitore" idAccettabile="c-3" style="color: #FFD700;"><span>Plastica</span></div>
<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">
<section class="oggettoElements">
<div class="fas fa-prescription-bottle oggetto" draggable="true" style="color: #000000;" id="c-32">
<div><span></span></div>
</div>
<div class="fas fa-bone oggetto" draggable="true" style="color: #000000;" id="c-42">
<div><span></span></div>
</div>
<div class="fas fa-flask oggetto" draggable="true" style="color: #000000;" id="c-22">
<div><span></span></div>
</div>
<div class="fas fa-box-open oggetto" draggable="true" style="color: #000000;" id="c-12">
<div><span></span></div>
</div>
</section>
<section class="oggettoElements">
<div class="far fa-newspaper oggetto" draggable="true" style="color: #000000;" id="c-11">
<div><span></span></div>
</div>
<div class="fas fa-wine-glass-alt oggetto" draggable="true" style="color: #000000;" id="c-21">
<div><span></span></div>
</div>
<div class="fas fa-wine-bottle oggetto" draggable="true" style="color: #000000;" id="c-31">
<div><span></span></div>
</div>
<div class="fas fa-apple-alt oggetto" draggable="true" style="color: #000000;" id="c-41">
<div><span></span></div>
</div>
</section>
<section class="oggettoElements">
<div class="far fa-hourglass oggetto" draggable="true" style="color: #000000;" id="c-23">
<div><span></span></div>
</div>
<div class="fas fa-drumstick-bite oggetto" draggable="true" style="color: #000000;" id="c-43">
<div><span></span></div>
</div>
<div class="far fa-map oggetto" draggable="true" style="color: #000000;" id="c-13">
<div><span></span></div>
</div>
<div class="fas fa-utensils oggetto" draggable="true" style="color: #000000;" id="c-33">
<div><span></span></div>
</div>
</section>
<section class="oggettoElements">
<div class="far fa-file oggetto" draggable="true" style="color: #000000;" id="c-14">
<div><span></span></div>
</div>
<div class="fas fas fa-cookie-bite oggetto" draggable="true" style="color: #000000;" id="c-44">
<div><span></span></div>
</div>
<div class="fas fa-shopping-bag oggetto" draggable="true" style="color: #000000;" id="c-34">
<div><span></span></div>
</div>
<div class="fas fa-vial oggetto" draggable="true" style="color: #000000;" id="c-24">
<div><span></span></div>
</div>
</section>
</section>

关于javascript - 将 JavaScript 代码包含到 HTML 中。并非全部都在工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61824921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com