0 votes
in SoSci Survey (dt.) by s027767 (235 points)
edited by s027767

Liebes SosciSurvey-Team

Ich habe einen Info-Button eingefügt und möchte mit einer internen Variable zählen, wie häufig der Button angeklickt wurde. Pro Person und Seite kann der Button mehrmals angeklickt werden.
Dafür habe ich folgenden Code verwendet, siehe unten.
(https://www.soscisurvey.de/help/doku.php/de:create:popup?s[]=informationen&s[]=per&s[]=mausklick&s[]=anzeigen)

In den Daten wird die interne Variable jedoch gar nicht angezeigt (und auch nicht gezählt, wie häufig der Button angeklickt wurde). Wissen Sie vielleicht, woran das liegt?
Und eine weitere Frage: Kann man auch einstellen, dass der Button nur maximal einmal pro Sekunde angeklickt werden kann?

Vielen Dank für Ihre Hilfe.
Freundliche Grüße

PHP:
question('IV01_01');

HTML:
<!-- Zunächst der Knopf zum Anzeigen der Info -->
<button type="button" onclick="buttonShow()">hier klicken</button>

<!-- Und dann die Info-Box -->
<div id="infoBox" style="width: 400px; padding: 5px; background-color: white; border: 2px solid #CCCCCC">
  Hier kommt die Zusatz-Info
  <p style="text-align: center; margin-top: 20px">
    <button type="button" onclick="buttonHide()">Schließen</button>
  </p>
</div>
 
<!-- Der JavaScript-Code -->
<script type="text/javascript">
<!--
var info = document.getElementById("infoBox");
info.style.display = "none"; // Box ausblenden
info.style.position = "absolute";
info.style.zIndex = 999;
// Entweder fix auf der Seite platziert
// info.style.left = "50px";
// info.style.top = "100px";
// Oder ein definiertes Stückchen unter dem Knopf
info.style.marginTop = "10px";

//Info-Nutzung speichern (Ein Button)
var info = new infoButton();
info.registerInfo("infoButton", "infoBox", "infoClose", "IV01_01");
 

function buttonShow() {
  // Infobox anzeigen
  info.style.display = "";
}
function buttonHide() {
  // Infobox wieder ausblenden
  info.style.display = "none";
}
   //-->
</script>

1 Answer

0 votes
by SoSci Survey (304k points)

Um die Frage mit der internen Variable korrekt einzubinden, schreiben Sie bitte question('IV01');, denn das _01 ist nur Teil der Variablen- nicht aber der Fragekennung.

Darüber hinaus fehlt in Ihrem JavaScript-Code m.E. ein größerer Teil, u.a. jener, der die Funktion registerInfo() definiert, also.

this.registerInfo = function(buttonID, boxID, closeID, storeID) {
    var button = document.getElementById(buttonID);
   // u.s.w.

Dieser Code (oben in der Anleitung) ist voraussetzung für die unteren Codes. Der Übersichtlichkeit halber sind unten in der Anleitung nur die Code-Teile angegeben, die sich verändern.

by s027767 (235 points)
Liebes SosciSurvey-Team

Dank der Antwort habe ich es nun hinbekommen, das war mir war nicht ganz klar.

Zum gleichen Thema habe ich noch eine Frage:

Ich möchte die steigende Anzahl an Klicks (auf den gleichen Button) auf der gleichen Seite anzeigen. Geht das überhaupt? Denn die Seite soll nicht ständig neu geladen werden. Vielleicht könnte man die Anzahl Klicks jedoch in die Info-Box schreiben. Dies habe ich so versucht:

var number_clicks = info.registerInfo("infoButton1", "infoBox1", "infoClose1", "IV01_01");
Text in Infobox: document.write(number_clicks);

Das hat leider nicht funktioniert. Oder würden Sie besser auf den Wert in der internen Variable zugreifen?

Vielen Dank nochmals.
Viele Grüße
by SoSci Survey (304k points)
Für eine ausführliche Antwort wäre eine neue Frage sinnvoll. Die Kurzfassung: Sie können mittels JavaScript auch Seiteninhalte ändern - allerdings nicht über `document.write()`. Man muss vielmehr ein Textelement (z.B. <span>) anhand der HTML-ID identifizieren mittels `document.getElementById()`, und dann den Inhalt ändern, z.B. über die Eigenschaft `innerHTML`.

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...