[html/javascript] onmouseover funktioniert nicht

Xboard23

Newbie
Registriert
Juni 2005
Beiträge
3
servus,

ich komme momentan einfach nicht weiter, evtl fällt euch ja eine lösung ein, bzw ihr findet meinen fehler ;):
(natürlich habe ich schon die suche benutzt, fand aber nichts, was mir geholfen hat)

es handelt sich um ein java/html problem im xtc shop.

ich möchte in die navigations-boxen einen mouseover bzw hover effekt einfügen. ziel ist es, den link, der gerade von der maus berührt wird, in einer anderen hintergrundfarbe darzustellen.(nicht nur der text, sondern auf breite des ganzen menues)

als erstes habe ich in den content berreich eine neu tabelle eingefügt -->
jeder neue link im menue bekommt eine eigene tabellen-zeile.

dann habe ich es mit "a" bzw "a:hover" im css versucht, leider kann ich damit nur den hintergrund des textes in der tabellen-zelle verändern. nicht aber den hintergrund der <td> bzw <tr>
also habe ich mich etwas in foren schlau gemacht und bin auf "onmouseover" aufmerksam geworden. da ich aber keine ahnung von java und nur sehr wenig von php habe, komme ich damit leider auch nicht zurecht :(

hier mein code aus templates/mein_template/source/boxes/content.php
ab line 44

PHP:
$content_string .= '<tr><td id="navRight" onmouseover="this.innerHTML = 'style="font-size:15px;"'><a href="'.xtc_href_link(FILENAME_CONTENT, 'coID='.$content_data['content_group'].$SEF_parameter).'">'.$content_data['content_title'].'</a></td></tr>';
	}

//benutze hier font-size:15px statt bg-color

hab den code für "onmouseover" aus selfhtml. aber werd da nicht wirklich schlau.

vielen dank im voraus

ps: ich sitze seid ewigkeiten an dem blöden fehler und find ihn nicht :( hab auch schon ohne ende an dem code verändert, aber irgendwas stimmt da noch nicht. ist bestimmt wieder ne blödes komma oder so ;)
 
AW: [html/java] onmouseover funktioniert nicht

Also das kann so nicht funktionieren, da zum einen this.innerHTML auf den Inhalt des Elements zugreifft und du damit nicht die Style-Attribute ändern kannst.
Das geht mit this.style.font-size = "15px";

Und Check mal bitte deine Anführungszeichen: Du wirst zum einen einen Parse-Error bekommen und zum andern fehlen die Backslashes bei dem onmouseover damit alles auch als zusammengehöriger String interpretiert wird.
 
AW: [html/java] onmouseover funktioniert nicht

Änder mal den JavaScript-Code vom MouseOver-Event z.B. so um:
onMouseOver="document.getElementById('navRight').style.backgroundColor = '#ff0000';"
Mehr Code brauchst Du nicht, um die Hintergrundfarbe der Zelle zu ändern (in diesem Fall auf Rot). Statt getElementById kannst Du auch this verwenden. Das macht aber nach meiner Erfahrung ab und an Probleme.


Die ID muss für jeden Navi-Eintrag natürlich anders sein. Kannst die ja mit dem Index der for-Schleife, mit der Du die Navi aufbaust, kombinieren.
Musst die Hintergrundfarbe natürlich bei onMouseOut wieder zurücksetzen.
 
Zuletzt bearbeitet:
AW: [html/java] onmouseover funktioniert nicht

danke für eure schnelle antwort,
aber leider komme ich damit nicht weiter.

@ sheepshaver:

ich deinen code eingefügt, leider funktioniert das nicht...

onMouseOver="document.getElementById('navRight').style.backgroundColor = '#ff0000';"

muss ich da noch irgendwas dran ändern?

@ enigma:

auch deinen code habe ich ausprobiert

$content_string .= '<tr><td id="navRight" onmouseover="this.style.font-size = "15px";"'>

leider, funktioniert es nicht, die anführungszeichen habe ich überprüft, scheint ok zu sein,


ich bin noch ein anfänger was php angeht, aber habe noch was in erinnerung, dass nicht alle befehle innerhalb von if funktion richtig funktionieren.
deshalb hier mal der code der ganzen php file

PHP:
<?php

$box_smarty = new smarty;
$content_string = '';

$box_smarty->assign('language', $_SESSION['language']);
// set cache ID
if (!CacheCheck()) {
	$cache=false;
	$box_smarty->caching = 0;
} else {
	$cache=true;
	$box_smarty->caching = 1;
	$box_smarty->cache_lifetime = CACHE_LIFETIME;
	$box_smarty->cache_modified_check = CACHE_CHECK;
	$cache_id = $_SESSION['language'].$_SESSION['customers_status']['customers_status_id'];
}

if (!$box_smarty->is_cached(CURRENT_TEMPLATE.'/boxes/box_content.html', $cache_id) || !$cache) {

	$box_smarty->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/');

	if (GROUP_CHECK == 'true') {
		$group_check = "and group_ids LIKE '%c_".$_SESSION['customers_status']['customers_status_id']."_group%'";
	}

	$content_query = "SELECT
	 					content_id,
	 					categories_id,
	 					parent_id,
	 					content_title,
	 					content_group
	 					FROM ".TABLE_CONTENT_MANAGER."
	 					WHERE languages_id='".(int) $_SESSION['languages_id']."'
	 					and file_flag=1 ".$group_check." and content_status=1 order by sort_order";

	$content_query = xtDBquery($content_query);

	while ($content_data = xtc_db_fetch_array($content_query, true)) {
		$SEF_parameter = '';
		if (SEARCH_ENGINE_FRIENDLY_URLS == 'true')
			$SEF_parameter = '&content='.xtc_cleanName($content_data['content_title']);

		$content_string .= '<tr><td onmouseover="this.style.font-size = "15px";"'><a href="'.xtc_href_link(FILENAME_CONTENT, 'coID='.$content_data['content_group'].$SEF_parameter).'">'.$content_data['content_title'].'</a></td></tr>';
	}
	if ($content_string != '')
		$box_smarty->assign('BOX_CONTENT', $content_string);

}

if (!$cache) {
	$box_content = $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_content.html');
} else {
	$box_content = $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_content.html', $cache_id);
}

$smarty->assign('box_CONTENT', $box_content);
?>

könnt ihr damit was anfangen ?
ich versteh nicht mal die hälfte von dem code, alles was ich verstehen kann, ist dass er sich die links für das menue zieht. :)

gruss xboard
und danke für eure mühe :)
 
Zurück
Oben