Zusammenwirken von HTML und JavaScript

Pius Hermit

Erfahrenes Mitglied
Hallo Zusammen.
Ich habe leider Probleme bei der Parameterübergabe in HTML als Function():
Code:
<p><img src="xHuhn.gif" width="Browser.getY();" height="Browser.getY();">...
Weiß jemand vielleicht, wie das geht?
Freundliche Grüße,
Ulrich
p.s. "Browser" ist eine selbsterstellte Klasse, welche sich an den Abmessungen des Browserfensters orientiert.
 
Schlechte Nachrichten: so geht das garnicht...man kann HTML-Elementattributen nicht inline den Rückgabewert von JS-Funktionen zuweisen.

Was ginge, wäre bspw. dies:
Code:
<img src="xHuhn.gif" onload="this.width=Browser.getX();this.height=Browser.getY();" >
 
Zunächst einmal Danke, Sven. Um Fehler zu vermeiden, habe
ich
Code:
this.style.width = ...
verwendet.
Aber leider klappt auch das nicht recht.
Hier nocheinmal der gesamte Code:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {
	background-color: #000000;
}
-->
</style>
<script language="JavaScript" type="text/javascript">
<!--
var Browser = {};
if (window.innerWidth) 
{// alle außer IE
	Browser.getWidth = function()
	{
		return window.innerWidth;
	}
	Browser.getHeigth = function()
	{
		return window.innerHeight;
	}
}
else if (document.documentElement && document.documentElement.clientWidth) 
{// IE mit DOCTYPE
	Browser.getWidth = function()
	{
		return document.documentElement.clientWidth;
	}
	Browser.getHeigth = function()
	{
		//document.write("Hoehe:"+document.documentElement.clientHeigth);
		return document.documentElement.clientHeigth;		
	}
}
else if (document.body.clientWidth) 
{// IE ohne DOCTYPE
	Browser.getWidth = function()
	{
		return document.body.clientWidth;
	}
	Browser.getHeigth = function()
	{
		return document.body.clientHeigth;
	}
}
Browser.getY = function()
{
	return (this.getHeigth / 5);
}
Browser.getY2 = function()
{
	return (2 * this.getHeigth / 5);
}
//-->
</script>
</head>

<body> 
<p><img src="xHuhn.gif" onload="this.style.width=Browser.getY();this.style.height=Browser.getY();">
Bemerkung:
1) Das Bild ist quadratisch, und soll in den Proportionen erhalten bleiben.
2) Ich verwende IE 7.
3) document.write (auch wenn nicht auskommentiert) funktioniert bei mir überhaupt nicht.
4) Das Bild und 4 weitere sollten gerade ohne zu scrollen in der Höhe passen, sind aber vertikal zu lang.
 
Zuletzt bearbeitet:
Naja, vor dem Fehler brauchst du keine Angst haben...so ein Bild hat ja width/height sowohl als HTML- als auch als CSS-Eigenschaft.

Wenn du es allerdings per style machst, müsstest du dazu noch eine Maßeinheit angeben, da der Browser mit deiner DOCTYPE-Angabe im Standards-Mode arbeitet und dies erwartet.
 
Aaaaah. Nun, jetzt habe ich direkt der width/heigth-Eigenschaft einen Wert zugewiesen:
Code:
var Browser = {};
	{
	if (window.innerWidth) 
		{// alle außer IE
		Browser.getWidth = function()
			{
			return window.innerWidth;
			}
		Browser.getHeigth = function()
			{
			return window.innerHeight;
			}
		}
	else if (document.documentElement && document.documentElement.clientWidth) 
		{// IE mit DOCTYPE
		Browser.getWidth = function()
			{
			return document.documentElement.clientWidth;
			}
		Browser.getHeigth = function()
			{
			//document.write("Hoehe:"+document.documentElement.clientHeigth);
			return document.documentElement.clientHeigth;		
			}
		}
	else if (document.body.clientWidth) 
		{// IE ohne DOCTYPE
		Browser.getWidth = function()
			{
			return document.body.clientWidth;
			}
		Browser.getHeigth = function()
			{
			return document.body.clientHeigth;
			}
		}
	Browser.getY = function()
		{
		return (Browser.getHeigth() / 5);
		}
	Browser.getY2 = function()
		{
		return (2 * Browser.getHeigth() / 5);
		}
	}
//-->
</script>
</head>

<body> 
<p><img src="xHuhn.gif" onload="this.width=Browser.getY();this.height=Browser.getY();">
<img src="xHuhnText.gif" onload="this.width=Browser.getY2();this.heigth=Browser.getY();"></p>
Aber es wird nichts angezeigt:confused:
Wie oben:
1) IE 7
2) document.write klappt bei mir nicht
3) Die Bilder sind quadratisch und sollen so proportional gestaucht werden, das 5 Bilder gleicher Größe in eine Vertikale passen, ohne dass gescrollt wird

Sind die abgefragten Browserparameter vielleicht falsch?
 
write() darf man nur während des Ladens des Dokumentes ausführen, sonst führt es zu ungewollten Effekten....das Dokument ist aber schon geladen, wenn du die Funktion aufrufst.

Was dein Anliegen betrifft, das lässt sich wunderbar mit CSS Lösen :)
Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; 
                                charset=ISO-8859-1"   />
<meta name="author"             content="doktormolle" />
<meta name="date"               content="2008-11-01"  />
<title>Test</title>
<style type="text/css">
<!--
html, body{margin:0}
.testdiv{width:100%}
.testdiv img{width:20%;}
-->
</style>
</head>
<body>
<div class="testdiv"><img src="http://www.tutorials.de/forum/avatars/pius+hermit.gif?dateline=1196603922"><img src="http://www.tutorials.de/forum/avatars/pius+hermit.gif?dateline=1196603922"><img src="http://www.tutorials.de/forum/avatars/pius+hermit.gif?dateline=1196603922"><img src="http://www.tutorials.de/forum/avatars/pius+hermit.gif?dateline=1196603922"><img src="http://www.tutorials.de/forum/avatars/pius+hermit.gif?dateline=1196603922"><img src="http://www.tutorials.de/forum/avatars/pius+hermit.gif?dateline=1196603922"><img src="http://www.tutorials.de/forum/avatars/pius+hermit.gif?dateline=1196603922"><img src="http://www.tutorials.de/forum/avatars/pius+hermit.gif?dateline=1196603922"><img src="http://www.tutorials.de/forum/avatars/pius+hermit.gif?dateline=1196603922"></div>
</body>
</html>
Das div hat eine Breite von 100%(des Body)....die Bilder eine von 20%(des Div).....so passen 5 nebeneinander :)

(Wundere dich nicht über die lange Wurst, zwischen den Bildern dürfen keine Leerzeichen stehen, damit es perfekt hinhaut ;))
 
T´schuldigung Leute, ich bin zu blöd:mad:: Ich habe
im Quellcode
Code:
height
falsch geschrieben!
Nun funktioniert das ganze einigermaßen....
...bis auf die Ränder.
Soll ich ein neues Thema unter "CSS" aufmachen?
Ich habe nämlich ein Problem damit, die "Ränder" wie
margin, border und padding zu entfernen:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {
	background-color: #000000;
}
p.class1 {
	margin: 0px;
	border: 0px;
	padding: 0px;
}

-->
</style>
<script language="JavaScript" type="text/javascript">
var Browser = {};
if (window.innerWidth) 
{// alle außer IE
	Browser.getWidth = function()
	{
		return window.innerWidth;
	}
	Browser.getHeight = function()
	{
		return window.innerHeight;
	}
}
else if (document.documentElement && document.documentElement.clientWidth) 
{// IE mit DOCTYPE
	Browser.getWidth = function()
	{
		return document.documentElement.clientWidth;
	}
	Browser.getHeight = function()
	{
		return document.documentElement.clientHeight;		
	}
}
else if (document.body.clientWidth) 
{// IE ohne DOCTYPE
	Browser.getWidth = function()
	{
		return document.body.clientWidth;
	}
	Browser.getHeight = function()
	{
		return document.body.clientHeight;
	}
}
Browser.getY = function()
{
	return (this.getHeight() / 5);
}
Browser.getY2 = function()
{
	return (2 * this.getHeight() / 5);
}
schreibe = function()
{
	document.write("Hoehe:"+Browser.getY()+" Breite:"+Browser.getY2());
}
</script>
</head>

<!-- <body onload = "schreibe()">
-->
<body> 
<p class = "class1">
<img src="xHuhn.gif" onload="this.style.width=Browser.getY();this.style.height=Browser.getY();">
</p>
Ansonsten könnte man den Titel auf "Zusammenwirken von HTML, JavaScript und CSS" ändern?!
 
Zuletzt bearbeitet:
Hi,
Soll ich ein neues Thema unter "CSS" aufmachen?
Ich habe nämlich ein Problem damit, die "Ränder" wie
margin, border und padding zu entfernen:
ich kann da soweit keine "Ränder" entdecken, die auf einer der drei genannten CSS-Eigenschaften basieren.

Für welches Element willst du denn die Ränder entfernen?

Ansonsten zu Beginn des zentralen Stylesheets einfach den Universalselektor * notieren, der alle im Dokument enthaltenden Elemente einbezieht:

CSS:
* {
margin:0;
padding:0;
border:0;
}

mfg Maik
 
Hallo Maik, danke zunächst für Deine Hilfe!

Der Deutlichkeit halber nocheinmal der Quellcode:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {
	background-color: #000000;
}
p.class1 {
	margin: 0;
	border: 0;
	padding: 0;
}

-->
</style>
<script language="JavaScript" type="text/javascript">
var Browser = {};
if (window.innerWidth) 
{// alle außer IE
	Browser.getWidth = function()
	{
		return window.innerWidth;
	}
	Browser.getHeight = function()
	{
		return window.innerHeight;
	}
}
else if (document.documentElement && document.documentElement.clientWidth) 
{// IE mit DOCTYPE
	Browser.getWidth = function()
	{
		return document.documentElement.clientWidth;
	}
	Browser.getHeight = function()
	{
		return document.documentElement.clientHeight;		
	}
}
else if (document.body.clientWidth) 
{// IE ohne DOCTYPE
	Browser.getWidth = function()
	{
		return document.body.clientWidth;
	}
	Browser.getHeight = function()
	{
		return document.body.clientHeight;
	}
}
Browser.getY = function()
{
	return (this.getHeight() / 5);
}
Browser.getY2 = function()
{
	return (2 * this.getHeight() / 5);
}
schreibe = function()
{
	document.write("Hoehe:"+Browser.getY()+" Breite:"+Browser.getY2());
}
</script>
</head>

<!-- <body onload = "schreibe()">
-->
<body> 
<p class = "class1">
<img src="xHuhn.gif" onload="this.style.width=Browser.getY();this.style.height=Browser.getY();">
</p>
<p class = "class1">
<img src="Singleboerse.gif" onload="this.style.width=Browser.getY();this.style.height=Browser.getY();">
</p>
<p class = "class1">
<img src="Warenboerse.gif" onload="this.style.width=Browser.getY();this.style.height=Browser.getY();this.style.margin=0;">
</p>
<p class = "class1">
<img src="Jobboerse.gif" onload="this.style.width=Browser.getY();this.style.height=Browser.getY();">
</p>
<p class = "class1">
<img src="Immobilienboerse.gif" onload="this.style.width=Browser.getY();this.style.height=Browser.getY();">
</p>
</body>
</html>
Mit dem unversal..."*" geht es schon besser, aber auch nicht perfekt=(
Ich dachte, dass das <p>-Tag einen Rand hätte, deshalb wollte ich die Subklasse "class1" definieren.
Letztendlich wollte ich 5 Icons vertikal so anordnen, dass die gesamte Höhe des Browsers voll ausgenutzt werden soll.
1) Kann, da auch mit "*" ein vertikaler Scrollbalken erscheint, das Problem an einem Rundungsfehler liegen?
2) Wo könnte sonst noch der Rand herkommen, wenn nicht vom p-Tag?
Bemerkung: Die gif´s haben alle quadratische Abmessungen 157x175...
Bemerkung2: Math.floor() in Browser.getY hat auch nicht geholfen!
 
Zuletzt bearbeitet:
Hi,

es ist ein CSS-Problem. Die margin- und padding-Werte des Dokumentenkörpers müssen noch entfernt werden. Ausserdem sollten die Bilder als Blockelemente ausgezeichnet werden (deshalb auch Svens Bemerkung mit der langen Wurst und den sonst resultierenden Problemen).
Code:
body {
  background-color: #000000;
  margin: 0; padding: 0;
}
p.class1 {
	margin: 0;
	border: 0;
	padding: 0;
}
p.class1 img{ display: block;}
Ciao
Quaese
 

Neue Beiträge

Zurück