Math.exp()

Deter

Grünschnabel
Hallo, um den Abstand des Elements mit der ID "wishbone" vom Fensterrand exponentiell zu setzen, habe ich versucht, die css-Eigenschaft "right" folgendermaßen zu verändern:

<script type="text/javascript">
var w=document.body.clientWidth;
getElementById("wishbone").right=Math.exp(w)
</script>

So geht das natürlich nicht...
aber wie?
dankeee...
 
oh vielen Dank! das geht aber schnell hier******
Leider wird mir kein Wert ausgegeben. Ausgegeben wird
HTML:
<div id="wishbone" style=""></div>
Eine Fehlermeldung wird nicht geloggt.
Das ist mein code:
Javascript:
<script type="text/javascript">
	var w=document.body.clientWidth;
	document.getElementById('wishbone').style.right = parseInt(Math.exp(w)) + "px";
	</script>
Außerdem ist noch ein Denkfehler drin. Ich muss die Fensterbreite noch durch 256 teilen, damit der exp() Wert passend wird.
So?
Javascript:
<script type="text/javascript">
	var w=document.body.clientWidth / 256;
	document.getElementById('wishbone').style.right = parseInt(Math.exp(w)) + "px";
	</script>
 
1. Wenn du das Script so im Head-Bereich stehen hast kann es nicht funktionieren. Da weder body noch div#wishbone zur Laufzeit bekannt sind. Du müsstest das Script also entweder in eine Funktion schieben und diese z.B. im body onload aufrufen oder das Script einfach vor das </body> verschieben.
2. Die css right Angabe hat keinerlei Auswirkung wenn nicht auch eine Position Regel angegeben wurde (z.B. position: relative; )
 
Das habe ich alles so... es wird nur eine leere style="" Angabe ausgegeben...
hier nochmal mein code zur Kontrolle:
HTML:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Math.exp() test</title>
<style type="text/css">
#wishbone {
	width:357px;
	height:96px;
	background:url(ipad-img/wishbone.png);
	/*right:5%;*/
	top:20px;
	position:absolute;
	z-index:1000;
}
</style>
</head>

<body>
	<div id="wishbone"></div>
<script type="text/javascript">
	var w=document.body.clientWidth;
	document.getElementById('wishbone').style.right = parseInt(Math.exp(w)) + "px";
	</script>
</body>
</html>
 
Du hast ja auch deinen eigenen Verbesserungsvorschlag vergessen umzusetzen:
Ich muss die Fensterbreite noch durch 256 teilen, damit der exp() Wert passend wird

Wenn nämlich w=document.body.clientWidth >= 710 dann kommt keine Zahl mehr raus sondern Infinity.

Und mit Infinity kann parseInt nicht sonderlich viel anfangen.
 
auch das onresize hat geklappt, mit diesem code im head:
Javascript:
<script type="text/javascript">
	function exponent() {
		var w=document.body.clientWidth/256;
		document.getElementById('wishbone').style.right = parseInt(Math.exp(w)) + "px";
	}
		window.onresize = exponent;
	</script>
supi!!
 
Zurück