Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > Klientspråk > JavaScript

Ajax krånglar vid sökning

jag har följt en guid här på aspkoll om hur man skapar en sökfunktion med Ajax och ASP. Problemet blir redan innan jag sökt. Den visar diven som inte ska visas innan jag sökt och skriver ut alla rubriker.

Sedan skulle jag vilja söka i både rubriken och texten (blogg). Hur gör jag detta?

Här är min kod: http://aspkoll.se/code/?id=40

mvh Kallgard.se
ID: #2262 | Skapades: 2007-10-26 12:32:02 | Tråden har 36 svar och har lästs 3120 gånger.
Sida: 123

Ja men funktionen gör ju två saker, den visar och den döljer diven.

Därför är det inte onödigt, för annars måste jag ju ha två olika funktioner för att göra en sak som en funktion kan göra...

Edvin Lindén, http://edvinlinden.se
ID: #2348 | Skapades: 2007-10-30 14:49:51

emil
emil

Gradering

#2350

Då den ändå kan ersättas med kod som är lättare att skriva så ser jag den som mycket onödig. Tycker inte du?

ID: #2350 | Skapades: 2007-10-30 14:55:36

Nej då jag(kanske inte han) använder funktionen till mer än att visa sökrutan och då är det väl onödigt att ha flera olika funktioner till det?

Säg tex att jag visar flera olika divar och ska visa sökrutan om den inte visas och ska stänga den när jag kollat klart på den, då är det väl bättre att ha en funktion till allt än flera funktioner till en sak...

Edvin Lindén, http://edvinlinden.se
ID: #2352 | Skapades: 2007-10-30 15:39:37

emil
emil

Gradering

#2353

Jag håller inte med.
Funktioner har man för att föenkla för den som använder dom. Inte krångla till det. Den här koden:

if (document.getElementById('searchDiv').style.display == 'none') { showSearch('searchDiv'); };
kan man ju förenkla till det här:
document.getElementById('searchDiv').style.display == 'none';

Om du då tycker att det är bättre att ha få funktioner (som jag inte håller med om heller). Så är ju det där mycket bättre än din kod då jag inte har någon funktion.

ifall man istället vill underlätta för anroparen. Han vet ju redan vad han vill behövs ju ingen if satts där som ska krånga till det. Så har man två funktioner (eller tre, om man vill ha en som togglar elementen också).

function showElement(strId) {
     document.getElementById(strId).style.display = '';
}

function hideElement(strId) {
    document.getElementById(strId).style.display = 'none';
}

det blir ju fruktansvärt mycket lättare att skriva
showElement('searchDiv');
än att skriva
if (document.getElementById('searchDiv').style.display == 'none') { showSearch('searchDiv'); }
då fyller ju funktionen sin funktion också, den underlättar för anroparen.
Men men om du inte köper dessa argument så kan man ju bara konstatera att vi har olika åsikter och att diskussionen inte kommer leda någon vart. Så det blir ju lika bra att lägga ned den.

ID: #2353 | Skapades: 2007-10-30 15:49:53

Jag förstår vad du säger och att du tycker att man ska ha olika funktioner för olika saker men om du kollar vad  min if-sats gör så förstår du kanske varför jag valde att göra så.

Jag visar resp. döljer divar med en funktion och att ha 2 funktioner till det blir väl krångligare än en funktio och en if-sats?

If-satsen kollar om man behöver köra funktionen för att visa sökresultatet inte för att dölja det, och ja man skulle kunna visa det direkt utan fuktion men om jag använder samma funktion på ett flertal ställen så är det väl bättre, och om man nu skulle vilja ha 2 funktioner så behöver man antagligen en if-sats eller 2 länkar eller dylikt som sköter var sin funktion och med den funktionen jag visade behövs ju bara en länk och om du bara vill visa eller dölja en div så är det bara att sätta en if-sats på det anropet.

Förstår du då vad jag menar?

Edvin Lindén, http://edvinlinden.se
ID: #2354 | Skapades: 2007-10-30 16:05:12

emil
emil

Gradering

#2356

Har förstått vad du menar hela tiden. Men du har fortfarande inte gett något argument hur det här:
if (document.getElementById('searchDiv').style.display == 'none') { showSearch('searchDiv'); }
kan vara enklare än det här:
showElement('searchDiv');

Att det är två funktioner gör det bara enklare enligt min mening. Och om du nu vill ha en funktion som togglar ett elements synlighet så är det ju bara att göra så här:

function isElementVisible(strId) {
     return document.getElementById(strId).style.display != 'none';
}

function toggleElement(strId) {
     if (isElementVisible(strId)) {
         hideElement(strId);
    } else {
        showElement(strId);
    }
}

Jag anser att du försöker använda en funktion vad den inte är till för.



Redigerad av emil
Anledning: Råka skriva ett fel i toggleElement funktionen
ID: #2356 | Skapades: 2007-10-30 17:35:10
Sida: 123
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy