I am trying to remove the last vestiges of inline JS on one of my sites. I’m part-way there but the image is being deleted whether I reply yes or no to the confirm()
. I’m sure there’s something simple I’m doing wrong.
Original code:
<!doctype html>
<html lang="en-GB">
<head>
<title>List uploaded images - website Admin</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/main.css">
</head>
<body>
<main>
<h1>Website admin</h1>
<h2>List uploaded images</h2>
<p class="listImg"><img src="../uploaded-imgs/chapel2.jpg" width="120">chapel2.jpg - <a href="delete-file.php?f=chapel2.jpg&d=uploaded-imgs" onclick="return areYouSure();">delete file</a></p>
<p class="listImg"><img src="../uploaded-imgs/christmas.jpg" width="120">christmas.jpg - <a href="delete-file.php?f=christmas.jpg&d=uploaded-imgs" onclick="return areYouSure();">delete file</a></p>
<p class="listImg"><img src="../uploaded-imgs/fete.jpg" width="120">fete.jpg - <a href="delete-file.php?f=fete.jpg&d=uploaded-imgs" onclick="return areYouSure();">delete file</a></p>
<p class="listImg"><img src="../uploaded-imgs/fireworks.jpg" width="120">fireworks.jpg - <a href="delete-file.php?f=fireworks.jpg&d=uploaded-imgs" onclick="return areYouSure();">delete file</a></p>
<p>Total 4 images.</p>
<hr>
<script>
function areYouSure() {
if (confirm("Delete entry - Are you sure?"))
return true;
else
return false;
}
</script>
</main>
</body>
</html>
Modified (part-working) code:
<!doctype html>
<html lang="en-GB">
<head>
<title>List uploaded images - website Admin</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/main.css">
</head>
<body>
<main>
<h1>Website admin</h1>
<h2>List uploaded images</h2>
<p class="listImg"><img src="../uploaded-imgs/chapel2.jpg" width="120">chapel2.jpg - <a href="delete-file.php?f=chapel2.jpg&d=uploaded-imgs">delete file</a></p>
<p class="listImg"><img src="../uploaded-imgs/christmas.jpg" width="120">christmas.jpg - <a href="delete-file.php?f=christmas.jpg&d=uploaded-imgs">delete file</a></p>
<p class="listImg"><img src="../uploaded-imgs/fete.jpg" width="120">fete.jpg - <a href="delete-file.php?f=fete.jpg&d=uploaded-imgs">delete file</a></p>
<p class="listImg"><img src="../uploaded-imgs/fireworks.jpg" width="120">fireworks.jpg - <a href="delete-file.php?f=fireworks.jpg&d=uploaded-imgs">delete file</a></p>
<p>Total 4 images.</p>
<hr>
<script>
const i = document.querySelectorAll(".listImg > a");
const imgs = Array.from(i);
for (let c = 0; c < imgs.length; c++) {
imgs[c].addEventListener("click", function() {
if (confirm("Delete entry - Are you sure?"))
return true;
else
imgs[c].preventDefault();
});
}
</script>
</main>
</body>
</html>