Javascript-forum
Popup öffnet sich nicht wenn der Button einen Link enthält - Druckversion

+- Javascript-forum (https://javascript-forum.de)
+-- Forum: Entwicklung (https://javascript-forum.de/forumdisplay.php?fid=4)
+--- Forum: Javascript (https://javascript-forum.de/forumdisplay.php?fid=6)
+--- Thema: Popup öffnet sich nicht wenn der Button einen Link enthält (/showthread.php?tid=2637)



Popup öffnet sich nicht wenn der Button einen Link enthält - Ghost42 - 31.10.2023

Hallo zusammen

Ich bin der Ghost42 und habe leider nur begrenzt Ahnung von Java Script. Allerdings muss ich ein Projekt abschliessen und habe soweit alles hinbekommen. Ausser etwas das vorher funktioniert hat und nun eben nicht mehr.

Deshalb benötige ich Hilfe.

Mein Code sieht wie folgt aus:


<script>

        $(function () {
            var sym = '?';
            var userAgent = navigator.userAgent || navigator.vendor || window.opera;

            if (/windows phone/i.test(userAgent)) {
                var sym = '?';
            }

            if (/android/i.test(userAgent)) {
                var sym = '?';
            }

            if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
                var sym = '&';
            }

           
            var smscodes = [[100, 'GB', 'CH/LI', 30, 20, '100GB', 'Text', '&nbsp;'],
            [3000, 'Minuten', 'CH/LI', 30, 10, 'EUA3000', 'Text', 'Text2'],
            [1, 'GB', 'EU/Zone3', 365, 10, 'EU1GB', 'Text', '&nbsp;'],
            [5, 'GB', 'EU/Zone3', 365, 30, 'EU5GB', 'Text', '&nbsp;'],
            [100, 'Minuten', 'EU/Zone3', 365, 10, 'EU100', 'Text', 'Text2'],
            [100, 'MB', 'Zone4', 365, 10, 'W100MB', 'Text', '&nbsp;'], &nbsp;'],
            [1, 'GB', 'Zone4', 365, 40, 'W1GB', 'Text', '&nbsp;'],
            [100, 'Minuten', 'Zone4', 365, 20, 'W100MB', 'Text', 'Text2'],
            ];
            //Container Element abrufen
            var options = "";


            // Schleife zur Generierung der HTML-Elemente
            for (let i = 0; i < smscodes.length; i++) {
                var code = smscodes[i];
                options=document.getElementsByClassName(code[5]); //100GB, EUA3000, EU1GB ..
                // HTML-Struktur und Inhalt erstellen
                var sidecol = '<div class="col-xxl-2 col-xl-2 col-lg-2 col-md-2 col-sm-0 col-xs-0"></div>';
                var center_col = '<div class="col optionbg">';
                var center_title = '<div class="row"><div class="col"><h3 style="font-size: 1.2rem;">' + code[6] + '</h3></div></div>';
                var center_subtxt = '<div class="row"><div class="col">' + code[7] + '<br><span style="font-size:12px;">Gültigkeitsdauer ab Kauf: ' + code[3] + ' Tage</span></div></div>';
                var center_btn = '<div class="row"><div class="col"><a title="Titel: ' + code[5] + '" href="sms:12345' + sym + 'body=' + code[5] + '" class="btn btn-primary popupbtn" style="width:100%; padding-top: 5px;"' + i + '">Aktivieren um ' + code[4] + '.- </a></div></div>';
                var center_col_end = '</div><div class="col-xxl-2 col-xl-2 col-lg-2 col-md-2 col-sm-0 col-xs-0" ></div>';
                var dataToDisplay = sidecol + center_col + center_title + center_subtxt + center_btn + center_col_end + sidecol;




                // Ein neues div-Element erstellen
                var optionhtml = document.createElement('div');

                // Klasse je nach code[2] setzen
                switch (code[2]) {
                    case 'CH/LI':
                        optionhtml.setAttribute("class", "col-row onehidden");
                        break;
                    case 'EU/Zone3':
                        optionhtml.setAttribute("class", "col-row twohidden");
                        break;
                    case 'Zone4':
                        optionhtml.setAttribute("class", "col-row threehidden");
                        break;
                    default:
                        optionhtml.setAttribute("class", "col-row");
                }

                // HTML in das neue Element einfügen
                optionhtml.innerHTML = dataToDisplay;

                // Das Element dem Container hinzufügen
                for (let j = 0; j < options.length; j++) {
                    options[j].appendChild(optionhtml);
                }
            }

        });
    </script>


 Dann den Code für das öffnen des Popups:
<script>
       
        document.addEventListener('DOMContentLoaded', function () {
            // Alle Buttons mit der Klasse 'popupbtn' abfragen
            const popupBtns = document.querySelectorAll('.popupbtn');
            const popupContainer = document.querySelector('.popup-container');
            const closeBtn = document.querySelector('.closebtn');

            // Schleife durch alle Buttons, um den Klick-Event hinzuzufügen
            popupBtns.forEach(function (btn) {
                btn.addEventListener('click', function () {
                    popupContainer.style.display = 'block';
                });
            });

            closeBtn.addEventListener('click', function () {
                popupContainer.style.display = 'none';
            });
        });
       
    </script>

Und dann der code mit den Inhalten von oben:

<div class="container-fluid">

                <div class="row"></div>
               
                <div class="EUA3000"></div>
                <div class="100GB"></div>
                <div class="EU100"></div>
                <div class="EU1GB"></div>
                <div class="EU5GB"></div>
                <div class="W100"></div>
                <div class="W100MB"></div>
                <div class="W1GB"></div>
</div>

Wenn ich dem Button die verlinkung entferne, funktioniert das popup fast. Zumindest fährt er nach ganz oben mit der Ansicht. Was er normalerweise beim öffnen eines solchen Popups auch getan hat. Aber wie bewerkstellige ich es, dass die verlinkung bleibt?

Danke schon mal vorab für die Hilfe
LG Ghost42