Javascript lädt ungewollt Seite neu

BluB0HR

Grünschnabel
Hallo,

irgendwie steh ich gerade auf dem Schlauch, vermutlich weil ich noch nicht ganz so bewandert in Javascript bin, aber vielleicht kann mir jemand unter die Arme greifen.

Ich rufe folgende function über den onClick-Befehl eines html-Links auf

Code:
 function uncheck() {
var myboxes = document.getElementsbyClass('charbox');
for(i=0; i<myboxes.length; i++)
  myboxes[i].checked = false;
}

Zuvor generiere ich eine form mit php, in der unter Abhängigkeit unterschiedlich viele Checkboxen mit verschiedenen values sind. Jedes mal wenn ich nun den Link anklicke lädt er die Seite neu, anstatt die Checkboxen on-the-fly zu unchecken. Wieso?
 
Moin,

ein Link bleibt ein Link, und sein Ziel wird verfolgt wenn du ihn anklickst, es sei denn, du verhinderst das, indem du im onclick-Event des Links ein return false; notierst.
 
return false ist angegeben, entschuldige, dass ich das nicht erwähnt habe

Code:
<a href="" onClick="uncheck(); return false">Link</a>
 
Dann wird vermutlich ein Fehler in der Funktion auftreten, weshalb das return falseim Anschluss ignoriert wird. Wie sieht denn deine Methode getElementsbyClass() aus...eine JS-eigene Methode mit diesem Namen gibt es nämlich nicht.
 
Ehrlich nicht? Ich war der Annahme diese Funktion würde existieren und google hat auch zichtausend Ergebnisse dazu ausgespuckt. Was kann ich denn stattdessen nutzen? Ich möchte halt auf Linkklick hin alle checkboxen in der form unchecken. values der checkboxen sind allerdings immer unterschiedlich und der name der checkbox ist als array gekennzeichnet.
 
Die Treffer, die Google dir alle geliefert hat, beziehen sich auf selbstgeschriebene Funktionen, schau mal in die Treffer hinein, du wirst dort sicher die passenden Funktionen finden.

und der name der checkbox ist als array gekennzeichnet.

Falls dir das Probleme beim Ansprechen über den Namen verursacht, das geht so:

Code:
document.formularname.elements['namemitklammer[]']
 
Okay, danke soweit.. allerdings bekomme ich es immer noch nicht hin, dass die Seite nicht neu lädt. Vielleicht liegt es an etwas anderem, deshalb eine weiter Frage.

Wenn ich in einer function eine if condition habe und nach der if condition die schleife fürs unchecken der checkboxen habe UND in einem fall der inhalt der if condition ein false ausgibt, so wird die if function ja nicht ausgeführt. lädt er dann für die nachfolgende schleife automatisch die seite neu? also wenn er merkt okay.. da kommt noch was nach if und in if ist false, lädt er die seite neu >.<
total verwirrend, aber das wäre momentan die einzige erklärung warum er immer die seite neu lädt wenn ich nach der if condition noch was stehen habe und false ausgebe

//edit

So, habs letztendlich doch hinbekommen.. hier das Ergebnis.
Wenn die if condition true is sendet er das Formular ab, ansonsten unchecked er einfach die Checkboxen mit der class charbox ohne die Seite neu zu laden. ^^
Anscheinend veranlasst Javascript ein Neuladen der Seite, wenn der Code nicht konform ist. Kann das sein?

Code:
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function deletechar() {
  if ( window.confirm("XXXXX ohne Widerruf löschen?") ) { 
  document.charlist.submit(); 
  }
  var myboxes = getElementsByClass('charbox');
  for(i=0; i<myboxes.length; i++) {
    myboxes[i].checked = false;
  }
}

HTML:
<a href="" onClick="deletechar(); return false">Link</a>
 
Anscheinend veranlasst Javascript ein Neuladen der Seite, wenn der Code nicht konform ist. Kann das sein?

Nö,

Der Browser honoriert einen Fehler im Skript mit dem Beenden des Ausführens der aktuellen Anweisung(logisch...es gibt einen Fehler, und wenn er nicht weiss, was er machen soll, macht er nichts mehr :-) )

Die Anweisung lautet:
Code:
deletechar(); return false
Tritt also in deletechar() ein Fehler auf, wird das return false nicht mehr beachtet.
Dieses return false hätte aber das Verfolgen des Linkzieles verhindert....was es nun nicht mehr tun kann.
 

Neue Beiträge

Zurück