Javascript fehler
bearbeitet von mely> Hallo mely
>
> > vielen Dank für dein Antwort. Ersmal es hat geklappt, verursacht aber andere Fehler [siehe hier](http://mely.bplaced.net/webseite/test.html).
>
> Du hast mich hier gleich *zweimal* falsch verstanden. ;-)
>
> Zunächst einmal hast du zwar wie von mir empfohlen die Zeile `$target = $(target);`{: .language-javascript} gelöscht, dann aber vergessen, die Zuweisung zwei Zeilen weiter unten *auch* anzupassen:
>
> ~~~ javascript
> 'scrollTop' : $(target).offset( ).top // und nicht $target.offset( ).top ! :-)
> ~~~
>
Hallo,
ich schäme mich eigentlich nochmal zu fragen, aber die Zeile
~~~ javascript
> 'scrollTop' : $(target).offset( ).top
> ~~~
ist/war genau so und habe da nichts verändert. Das ganze sieht so aus:
~~~js
$(document).ready(function () {
$(document).ready(function ( ) {
$(".fancybox").fancybox({
helpers : {
overlay : {
locked : false
}
}
});
$(".fancybox").on("click", function ( ) {
$(".fancybox").fancybox({
openEffect : 'none',
closeEffect : 'none'
});
});
});
$("#mobile-icon").click(function(){
$("nav").addClass("navTest");
});
$(".zoom-demo").spritezoom({
fadeInSpeed : 200,
fadeOutSpeed : 100, // general element fade out speed
behavior : "hover",
// "inner", "top", "right", "bottom", "left", "magnify" or empty
layout : "magnify",
// magnifying glass appearance
border : 4,
magSize : 0.8,
});
$(document).on("scroll", onScroll);
$('nav a[href^="#"]').on('click', function (e) {
e.preventDefault();
$(document).off("scroll");
$('nav a').each(function () {
$(this).removeClass('active');
$("nav").removeClass("navTest");
})
$(this).addClass('active');
var target = this.hash;
$('html, body').stop().animate({
'scrollTop': $target.offset().top
}, 500, 'swing', function () {
window.location.hash = target;
$(document).on("scroll", onScroll);
});
});
});
function onScroll(event){
var scrollPosition = $(document).scrollTop();
$('nav a').each(function () {
var currentLink = $(this);
var refElement = $(currentLink.attr("href"));
if (refElement.position().top <= scrollPosition && refElement.position().top + refElement.height() > scrollPosition) {
$('nav ul li a').removeClass("active");
currentLink.addClass("active");
}
});
}
document.addEventListener('DOMContentLoaded', function ( ) {
if (document.documentElement.scrollTop !== 0) {
onScroll( );
}
if (window.innerWidth < 500) {
var a = document.querySelectorAll('a.fancybox');
var len = a.length, i;
for (i = 0; i < len; i += 1) {
a[i].removeAttribute('class');
a[i].removeAttribute('href');
}
}
});
~~~
> Dazu hast du in deiner Handlerfunktion für `DOMContentLoaded` die `if`{: .language-javascript}-Anweisung die da *vorher* drin stand gelöscht und alles in den Block der neuen Anweisung geschrieben, aber ich meinte, dass du **nur** den Funktionsaufruf von `onScroll` von der Bedingung abhängig machen solltest, dass die Seite nach dem Neuladen automatisch gescrollt wurde:
>
> ~~~ javascript
> document.addEventListener('DOMContentLoaded', function ( ) {
> if (document.documentElement.scrollTop !== 0) {
> onScroll( );
> }
> if (window.innerWidth < 500) {
> var a = document.querySelectorAll('a.fancybox');
> var len = a.length, i;
> for (i = 0; i < len; i += 1) {
> a[i].removeAttribute('class');
> a[i].removeAttribute('href');
> }
> }
> });
> ~~~
>
hier habe dich ja ganz falsch verstanden:/
> Der *andere* `if`{: .language-javascript}-Anweisung kann doch ruhig so bleiben wie sie war, das ist ja eine andere Baustelle.
>
> > Und was meintest du unter Vollzitate zu vermeiden? Ich verstehe es nicht.
>
> Du zitierst immer den **kompletten Beitrag**, auf den du antwortest. Das nennt man ‚Vollzitat‘ und das erschwert das Lesen deiner Beiträge, also bitte vermeide das, indem du die Teile des Beitrags, auf die du dich *nicht* konkret beziehst, aus deiner Antwort *löschst*, so wie ich hier in *diesem* Beitrag ja auch nur einen **bestimmten Teil** *deines* Beitrags zitiere. ;-)
Ok, ich versuche es zu ändern :)
>
> Viele Grüße,
>
> Orlok