Hallo,
ich bin absoluter Javascript-Neuling und habe mir unter Schweiß und Tränen folgendes Script zusammengeschustert. Ziel ist es, eine CSS Klasse ein/ausblenden zu können sowie einer anderen das text-decoration: line-through zu nehmen sowie wieder hinzuzufügen. Der Schwierigste Teil für mich dabei war, den Status in eine localstorage zu speichern.
Zu meinem eigenen Erstaunen funktioniert mein Script, allerdings ist es programmiertechnisch eine Katastrophe (denke ich):
Nun wollte ich fragen, ob mir eventuell jemand den Code etwas aufräumen könnte bzw. mir Tipps geben könnte, wie ich es optimieren kann.
Außerdem stört mich noch, dass ich zwei Buttons benötige (einen zum Ausblenden und einen zum Einblenden). Gibt es eine Möglichkeit, beides in einem Button zu integrieren?
Vielen Dank bereits im Voraus.
ich bin absoluter Javascript-Neuling und habe mir unter Schweiß und Tränen folgendes Script zusammengeschustert. Ziel ist es, eine CSS Klasse ein/ausblenden zu können sowie einer anderen das text-decoration: line-through zu nehmen sowie wieder hinzuzufügen. Der Schwierigste Teil für mich dabei war, den Status in eine localstorage zu speichern.
Zu meinem eigenen Erstaunen funktioniert mein Script, allerdings ist es programmiertechnisch eine Katastrophe (denke ich):
Javascript:
//Toggle price
jQuery( document ).ready(function( $ ) {
//if localstorage item is not empty set '.special-price' to 'visibility: hidden'
if (window.localStorage.getItem("special-price") != null) {
var sp = window.localStorage.getItem("special-price");
if (sp === "true") {
$(".special-price").css("visibility", "hidden");
}
}
//AND if localstorage item is not empty set '.old-price' to 'text-decoration: none'
if (window.localStorage.getItem("price") != null) {
var op = window.localStorage.getItem("price");
if (op === "true") {
$(".old-price .price").css("text-decoration", "none");
}
}
//click .btn-hide to hide .special-price and save in localstorage
$(".btn-hide").click(function() {
var v = $(".special-price").is(":visible");
$(".special-price").css("visibility", "hidden");
window.localStorage.setItem("special-price", v);
});
//click .btn-hide to hide line-through of .old-price and save in localstorage
$(".btn-hide").click(function() {
var n = $(".old-price .price").is(":visible");
$(".old-price .price").css("text-decoration", "none");
window.localStorage.setItem("price", n);
});
//click .btn-show to show .special-price and clear localstorage
$(".btn-show").click(function() {
$(".special-price").css("visibility", "visible");
localStorage.clear();
});
//click .btn-show to add text-decoration line-through and clear localstorage
$(".btn-show").click(function() {
$(".old-price .price").css("text-decoration", "line-through");
localStorage.clear();
});
});
Nun wollte ich fragen, ob mir eventuell jemand den Code etwas aufräumen könnte bzw. mir Tipps geben könnte, wie ich es optimieren kann.
Außerdem stört mich noch, dass ich zwei Buttons benötige (einen zum Ausblenden und einen zum Einblenden). Gibt es eine Möglichkeit, beides in einem Button zu integrieren?
Vielen Dank bereits im Voraus.