webForumDet fria alternativet

Avancerat javascript ^^

3 svar · 245 visningar · startad av echoSwe

echoSweMedlem sedan nov. 20041 189 inlägg
#1

Tjena!

Jag har två frågor. Den första handlar om en varning/error som firefox kastar. Så här ser den ut:

Error: [Exception... "'Permission denied to get property XULElement.selectedIndex' when calling method: [nsIAutoCompletePopup::selectedIndex]" nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)" location: "JS frame :: http://localhost/haf.se/wwwpub/javascript/common.js :: anonymous :: line 19" data: no]
Source File: http://localhost/haf.se/wwwpub/javascript/common.js
Line: 19

och det gör den till den här koden:

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function wireSearchBox() {
	var b = document.getElementById("txtSearch");
	b.temp = b.value;
	b.addEventListener('focus', function() {
		if (this.value == this.temp) this.value = '';
		this.addEventListener('blur', function() {
		   if (this.value.length < 1)
		   {
				this.value = this.temp;
		   }
	   }, false);
	}, false);
}

addLoadEvent(wireSearchBox);

addLoadEvent() är det inte jag som har kommit på, måste jag ändå säga, utan det är quirksmode.org, men wireSearchBox är det jag som har kommit på ;) - man blir ju bättre eller hur (ni som har sett mig skriva här innan vet). I alla fall så klagar den på rad nitton:
if (this.value == this.temp) this.value = '';
och säger något oförståligt... Någon som vet vad jag gör för fel? För funktionen fungerar perfekt.

Beskrivning av funktionen:
Hämta nuvarande text. När man klickar i rutan tas texten bort. När man sedan flyttar bort markören från rutan kollas det om det finns någon inskriven text i rutan och om det inte finns det så återställs den första texten. Om personen _har_ skrivit in något så tas inte det bort när markören tas bort.

...men eftersom man sedan kan markera rutan igen så måste man kolla rad 19: om det är användarens text eller orginaltexten som står där, för om det är användarens redan insatta så ska den inte tas bort när fokus kommer i textrutan.

Min andra fråga då: går det att göra den här koden snyggare?

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Hejsan!

Jag upplever inte felmeddelandet.

Vad jag har att anmärka på, är att du skapar en ny egenskap (temp) för input-elementet. En egenskap som egentligen inte existerar för <input> (inte någon annan tagg heller för den delen). Kanske kan det vara därför FF säger ifrån.

Istället kan du skapa en lokal variabel (var foo, säg) som du sparar den temporära datan i.

echoSweMedlem sedan nov. 20041 189 inlägg
#3

Testade byta ut till "foo" som variabel och jag får fortfarande samma fel. Fast man ser det inte direkt när man klickar, utan man måste gå in på tools --> javascript console i firefox för att se felet.

Kollade med en kompis (silfver) och han får samma fel...

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Som sagt, jag får inget felmeddelande. Kan du snickra ihop en enkel testsida där felet uppenbarar sig?

125 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)