Немного предыстории и информации о моих знаниях кода:
Я изучаю код в течение 2-3 лет, и в настоящее время я работаю над веб-приложением с одноклассником, и мы почти закончили,В основном я занимался HTML / CSS, а он в основном PHP / JavaScript, поэтому мои знания в основном HTML и CSS.
Моя проблема:
Мой одноклассник закодировал систему, в которой определенные«значки» находятся на определенных уровнях, и вы можете перетаскивать их на разные уровни.Эти значки извлекаются из базы данных, а затем создаются с использованием некоторой формы цикла, который выполняется для каждого значка в базе данных.Это происходит с некоторым HTML-кодом в PHP.Эта часть работает отлично.
Изображение значков и уровней здесь
Теперь возникает моя проблема: я пытаюсь создать некоторую форму выпадающего меню в каждом отдельном человеке 'значок », но в то время как выпадающие кнопки появляются в каждом« значке », содержимое выпадающего меню отображается только рядом с первой кнопкой.Я не знаю, является ли это тем же контентом, который вызывается каждой кнопкой, или это другой контент, который по какой-то причине появляется в том же месте.Если бы кто-то мог сказать мне, что именно идет не так и как это исправить, это было бы очень признательно.(мы должны закончить наш проект 5 или 6 февраля 2019 года.)
Нажата первая выпадающая кнопка
Четвертая выпадающая кнопка нажата
Как вы можете видеть, он появляется в том же месте, но нажимаются разные кнопки.
Используемый код:
Основной код, состоящий из HTML, PHP и JavaScript:
<!DOCTYPE html>
<head>
<title>Badges</title>
<link rel="stylesheet" href="main.css" />
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="BadgePage.js"></script>
</head>
<body style="margin:0">
<div id="container">
<div id="home">
<a href="workinprogress.html">
<button class="home-button">
<img src="img/MCC.png" width="200" height="60">
</button>
</a>
</div>
<div id="BP-link" class="nav">
<a href="Testing2.php"><button class="bpbutton">Badges</button></a>
</div>
<div id="lln_page" class="nav">
<a href="LeerlingenPage.php"><button class="llnpbutton">Leerlingen</button></a>
</div>
<div id="main">
<div class="main">
<?php
$link = mysqli_connect("localhost", "root", "", "badgedb");
$lev = 1;
$levAantal = 3;
for($lev;$lev<=$levAantal;$lev++){
echo '<div id="level' . $lev . '" class="levelID">';
echo '<p class="level">Level ' . $lev . '</p>';
echo '<ul class="itemList Level-' . $lev . ' ui-sortable" id="L' . $lev . '">';
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
$sql = "SELECT * FROM badges";
if($result = mysqli_query($link, $sql)){
if(mysqli_num_rows($result) > 0){
} else{
echo "No records matching your query were found.";
}
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
while($row = mysqli_fetch_array($result)){
if($row['level'] == $lev){
echo " <li class='item'>
<link rel='stylesheet' href='side.css' />
<script type='text/javascript'>
/* When the user clicks on the button,
toggle between hiding and showing the dropdown content */
function myFunction() {
document.getElementById('myDropdown').classList.toggle('show');
}
// Close the dropdown menu if the user clicks outside of it
window.onclick = function(event) {
if (!event.target.matches('.dropbtn')) {
var dropdowns = document.getElementsByClassName('dropdown-content');
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
}
}
</script>
<img src='img/" . $row['afbeelding'] . "' alt='Item Number " . $row['ID'] . "' class='itemImage' id='" . $row['ID'] . "'>
<div class='dropdown'>
<button onclick='myFunction()' class='dropbtn'>Dropdown</button>
<div id='myDropdown' class='dropdown-content'>
<button href='#'>Link 1</button>
<button href='#'>Link 2</button>
</div>
</div>
</li>";
}
}
echo "</ul>";
echo "</div>";
}
?>
<script type="text/javascript">
function onSubmit(){
var badgeID;
var Alpha = 1;
const search = $('.main > div.levelID > ul > li > img');
const badges = {};
const hrefDir = location.href.replace(/(^.*\/).*?$/, '$1'); // http://localhost/PWS/Testing2.php -> http://localhost/PWS/
for (const badge of search) {
const levelID = parseInt(badge.parentElement.parentElement.id.replace('L', ''));
if (badge.id){
badgeID = parseInt(badge.id);
}
else {
badgeID = 0;
}
const badgeImg = badge.src.replace(hrefDir + 'img/', '');
badges[Alpha] = {
level: levelID,
afbeelding: badgeImg,
ID: badgeID
}
Alpha++;
}
$.ajax('api/update-order.php', {
data: badges
});/*.done((data)=>{
console.log(data)
});
console.log(badges);/**/
alert("Data uploaded!");
}
</script>
<input type="button" onclick="onSubmit()" value="submitter">
<!-- <div class="optionsButton">
<div class="dropdown">
<button class="dropbtn"><img src="img/cogwheel.png" alt="opties" class="options"></button>
<div class="dropdown-content">
<p>YEET</p>
</div>
</div>
</div> -->
</div>
</div>
</div>
</body>
Основной документ CSS:
* {
box-sizing: border-box;
}
#myInput {
background-color: white;
width: 40%;
font-size: 16px;
padding: 12px 20px 12px 40px;
border: 1px solid #ddd;
margin-bottom: 12px;
margin-left: 30%;
}
#myTable {
border-collapse: collapse;
width: 80%;
border: 1px solid #ddd;
font-size: 18px;
margin: 0 auto;
}
#myTable th, #myTable td {
text-align: left;
padding: 12px;
}
#myTable tr {
border-bottom: 1px solid #ddd;
}
#myTable tr.header, #myTable tr:hover {
background-color: #f1f1f1;
}
body {
margin: 0;
}
}
.dropbtn {
background-color: darkgray;
border-left: solid;
border-top: solid;
border-top-left-radius: 10px;
max-height: 10%;
max-width: 5%;
height: 100px;
width: 100px;
position: fixed;
bottom: 0px;
right: 0px;
}
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
right: 100%;
top: 0%;
background-color: darkgray;
width: auto;
}
.main {
height: 100%;
}
.options {
height: 100%;
width: 100%;
}
p.level {
width: inherit;
text-align: center;
background-color: gray;
color: white;
padding: 5px;
margin-top: 0;
font-size: 20px;
border-radius: 10px;
border: solid darkgray;
}
ul.itemList {
height: auto;
min-height: 50px;
}
.ui-sortable-handle {
width: auto;
}
li.item {
display: inline-block;
border: 1px black double;
background-color: lightgrey;
padding: auto;
padding-left: 1%;
padding-right: 1%;
margin-left: 0px;
}
img.itemImage {
height: 150px;
width: 150px;
}
button.bpbutton {
height: 100%;
width: 100%;
color: white;
background-color: #F44336;
border: solid;
border-color: #F44336;
}
button.bpbutton:hover {
background-color: #cc1c0e;
color: lightgray;
}
button.llnpbutton {
height: 100%;
width: 100%;
color: white;
background-color: #F44336;
border: solid;
border-color: #F44336;
}
button.llnpbutton:hover {
background-color: #cc1c0e;
color: lightgray;
}
button.home-button {
height: 100%;
width: 100%;
color: white;
background-color: #F44336;
border: solid;
border-color: #F44336;
}
#container {
display: grid;
grid-template-columns: 0fr 1fr 1fr;
grid-template-rows: 1fr 14fr;
grid-template-areas:"home BP-link lln_page"
"main"
}
#home {
background-color: #F44336;
padding-left: 10px;
border-right: dashed #f22615;
border-bottom: solid #f22615;
color: white;
padding-top: 1%;
}
#zoek {
background-color: #F44336;
border-right: dashed;
border-color: #f22615;
color: white;
text-align: center;
border-bottom: solid #f22615;
}
#BP-link {
background-color: #F44336;
color: white;
text-align: center;
border-bottom: solid #f22615;
border-right: dashed #f22615;
}
#lln_page {
background-color: #F44336;
color: white;
text-align: center;
border-bottom: solid #f22615;
}
#main {
background-color: lightgray;
width: 100%;
grid-column: 1 / end;
}
#workinprogress {
background-image: url(https://www.scansys.eu/scansysfld/uploads/2017/06/Work_In_Progress.png);
background-size: contain;
background-repeat: no-repeat;
background-position: center;
background-color: lightgray;
width: 100%;
grid-column: 1 / end;
}
th, td, table {
border: 1px black solid;
border-collapse: collapse;
}
textarea.comment {
resize:none;
height:50px;
width:90%;
}
.buttonForSubmit {
text-align: center;
}
#submitButton {
height:50px;
width:60px;
}
Документ CSS специально для выпадающих компонентов:
.dropbtn {
background-color: #3498DB;
color: white;
padding: 16px;
font-size: 16px;
border: none;
cursor: pointer;
}
.dropbtn:hover, .dropbtn:focus {
background-color: #304870;
}
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #f1f1f1;
width: 100%;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
}
.dropdown-content button {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
width: 100%;
}
.dropdown-content button:hover {background-color: #ddd}
.show {display:block;}
Изображение базы данных, если вам это нужно.
Спасибо, что прочитали, и я надеюсь, что вы или кто-то еще может помочь нам.Пожалуйста, скажите мне, если вам нужно что-нибудь еще.