Permalänk

getelementbyid()

Förlåt om jag tar upp samma fråga flera gånger, men får verkligen inte detta att fungera

jag snickrade ihop ett script som ska, då man skrivit fel ord i en promp, aktiverar ett event som gör att ,när jag sedan klickar på det element jag satt id på, det kommer upp en alert.

<html>
<head>
<script type="text/javascript">
function alert()
{
alert("apa")
}
function disp_prompt()
{
var name=prompt("Please enter your name","Harry Potter")
if (name=="fabian")
{
alert("haaa")
}
else
addevent()
{
document.getElementById("MyHeader").onmousedown="alert()"
}
}
</script>
</head>
<body id="MyHeader">
<input type="button" onclick="disp_prompt()" value="Display alert box" />
</body>
</html>

Detta är kanske helt fel men jag tror att det är så jag ska gå till väga.
Tanken är här att när jag trycker på knappen så kommer prompten upp (disp_prompt()). om jag sedan skriver in något annat än fabian så aktiveras ett event som gör att när jag klickar i fönstret visas alert()

dock är tanken att innan fel ord har skrivits in i promtboxen ska inte alert() visas då jag klickar i fönstret..

vet någon vad jag har gjort för fel eller hur jag ska göra i stället?

Hoppas jag gjorde mig någorlunda förstådd nu

Permalänk
Medlem

en snabb sak jag tänkte på. Vart tog alla semikolon vägen. Ska dom inte vara med i javascript?

Visa signatur
Permalänk
Medlem

Semikolon är valfritt i JavaScript. Ja, det är väldigt mystiskt men så är det i JavaScript

Permalänk

Ok, men vet någon hur jag ska göra det jag beskrev ovan?

Permalänk
Avstängd

du kan inte skriva så här
document.getElementById("MyHeader").onmousedown="alert()"

skriv så här istället

document.getElementById("MyHeader").onmousedown= new Function("alert('blablabla');");
eller
document.getElementById("MyHeader").onmousedown= function(){alert("blablabla");}

Visa signatur

Programmerare med C++ som huvudspråk.

Permalänk

Tack så mycket... skulle du kunna snicka ihop ett script som när man t.ex. trycker på en knapp gör så att när man sedan klickar någonstans i fönstret så kommer en alert upp eller något liknande, bara så jag ser tekniken

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fabianbergmark
Tack så mycket... skulle du kunna snicka ihop ett script som när man t.ex. trycker på en knapp gör så att när man sedan klickar någonstans i fönstret så kommer en alert upp eller något liknande, bara så jag ser tekniken

<!DOCTYPE html> <style type="text/css"> * {border:1px solid #000;} </style> <script type="text/javascript"> var alerton = false; window.addEventListener("load", function() {document.getElementById("button").addEventListener("click", switchalert, false);}, false); function alertme() { alert("w00t?"); } function switchalert() { if (alerton) { document.getElementById("button").firstChild.data = "Enable alert?"; document.body.removeEventListener("click", alertme, false); alerton = false; } else { document.getElementById("button").firstChild.data = "Disable alert!"; document.body.addEventListener("click", alertme, false); alerton = true; } } </script> <button type="button" id="button">Enable alert?</button>

Permalänk

Tack så mycket Gosh och cic, bara en fråga, verkar inte som IE klara av detta scritp, vilken vebbläsare ska jag använda mig av?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fabianbergmark
Tack så mycket Gosh och cic, bara en fråga, verkar inte som IE klara av detta scritp, vilken vebbläsare ska jag använda mig av?

addEvent? Eller en webbläsare som har stöd bättre stöd för webbstandarder, t.ex. Firefox eller Opera.

Permalänk

Går detta att göra i html med body och head tag?

felmeddelandet säger att objektet inte stöder egenskapen eller metoden, öppnade i IE.

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av fabianbergmark
Tack så mycket Gosh och cic, bara en fråga, verkar inte som IE klara av detta scritp, vilken vebbläsare ska jag använda mig av?

exempel på hur du skall göra för att stödja både IE och andra

if( theElement.addEventListener ) { theElement.addEventListener('mousedown',myfunction,false); } else if ( theElement.attachEvent ) { theElement.attachEvent('mousedown',myfunction); } else { theElement.onmousedown = myfunction; }

addEventListener finns inte i internet explorer utan den har istället attachEvent

Visa signatur

Programmerare med C++ som huvudspråk.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fabianbergmark
Går detta att göra i html med body och head tag?

I HTML är html, body och head taggarna frivilliga. Elementen är där ändå, webbläsaren har en skyldighet att lägga till elementen även om taggarna saknas.

Permalänk

så om jag tar ditt skript, rakt av, och öppnar med firefox så ska det fungera. Det verkar inte som IE stödjer metoden.

Tackar Gosh

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av fabianbergmark
så om jag tar ditt skript, rakt av, och öppnar med firefox så ska det fungera. Det verkar inte som IE stödjer metoden.

Tackar Gosh

Tänk på att när du programmerar så måste du veta exakt hur teknikerna fungerar och vad du gör. Det går aldrig och chansa. I början gör man mycket fel och det blir en hel del letande efter varför det inte fungerar. Kan vara jobbigt men mycket nyttigt då man lär sig av det.

Du behöver öva och testa en hel del innan du är mer varm i kläderna, det går och se på din kod och tyda av dina frågor. Så även om du får till något som fungerar nu så blir det lätt att det dyker upp nya fel om du ändrar eller vill ha annan funktionalitet

Visa signatur

Programmerare med C++ som huvudspråk.

Permalänk

Håller nog med där, vore dock skönt om jag fick detta klart, hur får jag denna funktion att fungera i IE? eller är det bara att öppna i Firefox så är problemet borta

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fabianbergmark
..., hur får jag denna funktion att fungera i IE? eller är det bara att öppna i Firefox så är problemet borta

Citat:

Ursprungligen inskrivet av gosh
addEventListener finns inte i internet explorer utan den har istället attachEvent

Permalänk

så jag ska, i ditt skript, byta ut addeventlistner mot attachevent för att få det att fungera i IE? är det något jag måste tänka på när jag gör detta?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fabianbergmark
... är det något jag måste tänka på när jag gör detta?

Ja, läs länkarna som gosh skickade i någon annan av dina sjuhundra JS-trådar, och kanske lite på MSDN.

Permalänk

Orkar inte tjafsa med att byta till attachevent, tänker dock läsa articklarna gosh skickade, Stog där att addeventlistner inte fungerade i IE men ingentig om att det inte skulle fungera i firefox, är detta korrekt?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fabianbergmark
Stog där att addeventlistner inte fungerade i IE men ingentig om att det inte skulle fungera i firefox, är detta korrekt?

Ja.

edit: För att kolla vad Fx har stöd för finns developer.mozilla.org, för IE är det som sagt MSDN som gäller, Opera har dev.opera.com osv.

Permalänk

Tack för scriptet Cic, allt fungerar perfekt i firefox, dock undrar jag hur jag ändrar från nuvarande att när man aktiverat genom att trycka enabel alert så kommer enbart alerten"Woot?" upp om jag klickar på samma höjd som knappen är, dvs om jag klickar under eller över knappen händer ingenting, men om jag klickar på höger eller vänster sida, (i samma höjd) så kommer alerten upp. hur fixar jag detta?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fabianbergmark
Tack för scriptet cic, allt fungerar perfekt i firefox, dock undrar jag hur jag ändrar från nuvarande att när man aktiverat genom att trycka enabel alert så kommer enbart alerten"Woot?" upp om jag klickar på samma höjd som knappen är, dvs om jag klickar under eller över knappen händer ingenting, men om jag klickar på höger eller vänster sida, (i samma höjd) så kommer alerten upp. hur fixar jag detta?

click-event:en skickas bara till body när du klickar på body... :). body, html {height:100%}. Testa body {border:1px solid #000} ser du vart body börjar och slutar.

Permalänk

nu har jag ett par 200 pixlar tjocka streck :p, vad gör jag då? vill fortfarande ha samma loyout som ditt skript, dvs, en liten knapp utan jättetjocka kanter men att woot kommer upp, efter man har tryckt på enable knappen, när jag trycker överallt i fönstret, inte bara på samma höjd som knappen. finns det inget smidigare sätt att göra detta än att förstora upp allting? fungerar inte särskillt bra eftersom knappen också blir mycket större

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fabianbergmark
nu har jag ett par 200 pixlar tjocka streck :p, vad gör jag då? vill fortfarande ha samma loyout som ditt skript, dvs, en liten knapp utan jättetjocka kanter men att woot kommer upp, efter man har tryckt på enable knappen, när jag trycker överallt i fönstret, inte bara på samma höjd som knappen. finns det inget smidigare sätt att göra detta än att förstora upp allting? fungerar inte särskillt bra eftersom knappen också blir mycket större

html, body {height:100%; margin:0; padding:0;}

Det ska inte göra knappen större, har inte en aning om hur du lyckades med det.

edit: Kanske smidigare att sätta lyssnaren på html så kunde man:

html, body {margin:0;} html {height:100%; padding:0;} body {padding:2em;}

Permalänk

jag tror att den gör knappens kanter bredare eftersom jag anger en border tjocklek, själva knappen blir inte större

Har inte hållt på med Css så mycket, hur fixar jag så att hela fönstret aktiverar alerten, efter att ha tryckt på enable alert, istället för enbart områdena på sidan av knappen, utan att förstora hela borden eftersom detta leder till att knappens placering blir konstig samt en del fler konstigheter

såg din ändring, som sagt inte så hemma på css, skulle du kunna ta ditt förra script och sätta in det du föreslog i det?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av fabianbergmark
jag tror att den gör knappens kanter bredare eftersom jag anger en border tjocklek, själva knappen blir inte större

Har inte hållt på med Css så mycket, hur fixar jag så att hela fönstret aktiverar alerten, efter att ha tryckt på enable alert, istället för enbart områdena på sidan av knappen, utan att förstora hela borden eftersom detta leder till att knappens placering blir konstig samt en del fler konstigheter

såg din ändring, som sagt inte så hemma på css, skulle du kunna ta ditt förra script och sätta in det du föreslog i det?

Läs.

edit: Att koppla lyssnaren till html (vet inte ens om man "får" det) vekar vara ganska omständligt (finns inget document.html verkar det som), så man verkar få använda getElementsByTagName("html")[0] (istället för där body står nu i JS:et)

Permalänk

Har fixat så att hela fönstret nu aktiverar alerten då jag trycker i det, ett problem bara. vad jag förstår bygger ditt script på att man trycker på en knapp först. dock vill jag att addeventlistner aktiveras då "fel" ord skrivits in i en prompt. har försökt att fixa detta men finner det svårt

vet du hur jag ändrar så att addeventlistnern aktiveras då fel ord skrivit in i promten istället för då jag trykt på knappen?