/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
DHTML (IE + NS) hvordan? (jeg bliver
Fra : Sports-MC / Claus Be~


Dato : 21-03-02 08:44


Hej NG

Jeg er ved at lave en indkøbskurvs funktion til vores site. Den skal
fungere som et lille pop-up vindue hvor produktet præsenteres. Man har
under produktet en række options (dropdown boxe) hvor valgene heri
(f.eks. farve, behandling, etc) kan påvirke den samlede pris for varen.

Da siderne genereres i PHP er det intet problem at få lavet dropdownboxe
med det rette indhold og jeg har lavet (også genereret) javascript der
kan udregne prisen på varen udfra de faktisk valgte options.

Problemet kommer i Netscape når jeg skal opdatere i HTML'en med
javascriptet! (Af uransagelige grunde surfer 24.88% af vores besøgende
forbi med NS4.x så det er nødt til at virke i denne browser også).

Jeg har lavet nogle <DIV ID="linieX">&nbsp;<(/DIV> tags i felterne hvor
summerne skal skrives. I IE fungerer det fint bare man skriver:

document['linieX'].innerHTML = '49,95';

I Netscape kan jeg kun få det til at virke med <ILAYER
ID=nslinieX><LAYER ID=linieX>&nbsp;</LAYER><ILAYER>.

Det giver nogle problemer da:
- felterne selvfølgelig er placeret inden i <TD>.. </TD> tags
- positioneringen af felterne ikke er let - jeg kan ikke få dem til at
fylde cellens bredde ud.
- jeg kan ikke få højrestillet teksten inden for <LAYER> tagsene
- jeg kan ikke få den til at ændre skrifttypen
- størrelsen og placeringen giver også problemer

Når jeg kigger på http://developer.netscape.com siger de da også, at de
to layer tags er depreciated fra version 4.x og man i stedet skal bruge
positionerede <DIV> tags.

Problemet er bare at dem kan jeg simpelthen ikke finde ud af at opdatere
via script i netscape...

Er der nogle der har et eksempel der virker eller som kan fortælle
hvordan pokker man via script opdaterer teksten mellem de to <DIV> tags
i NS4.x? (jeg har søgt på nogle script sites og der fandt jeg kun et
virkende eksempel - og det brugte i øvrigt også <LAYER> og <ILAYER>
tags).

Venlig hilsen,
Claus





 
 
Stig Nygaard (21-03-2002)
Kommentar
Fra : Stig Nygaard


Dato : 21-03-02 20:37

Hej Claus

Sports-MC / Claus Bernth wrote:
> Jeg har lavet nogle <DIV ID="linieX">&nbsp;<(/DIV> tags i felterne hvor
> summerne skal skrives. I IE fungerer det fint bare man skriver:
> document['linieX'].innerHTML = '49,95';

Det er en lidt "grisset" non-standard måde du adresserer din DIV på, som
kun virker i IE4+. Jeg ville i stedet gøre som følger:

if(document.getElementById) // IE5+, N6+, Moz, Konqi, m.fl.
document.getElementById('linieX').innerHTML = '49,95';
else if(document.all) // IE4
document.all['linieX'].innerHTML = '49,95';

Jeg har her baseret mig på en "standard DOM-1" løsning, men dog tilføjet
kompatibilitet til IE4 også (IE understøtter først DOM-1 fra version 5
og frem). innerHTML er dog heller ikke helt en standard-ting, men dog
bredt understøttet.

Det virker dog stadig ikke i NN4.x da denne ikke understøtter DOM-1
heller og da du her desuden også kun kan udskifte indholdet dynamisk i
/positionerede/ DIVs. Det betyder at din DIV skal være et separat lag,
og det er nok ikke særlig praktisk i dette tilfælde. Men noget lignende
skulle virke:

<DIV id="linieX"
style="position: absolute; left:100px; top: 100px;">

if(document.getElementById) // IE5+, N6+, Moz, Konqi, m.fl.
document.getElementById('linieX').innerHTML = '49,95';
else if(document.all) // IE4
document.all['linieX'].innerHTML = '49,95';
else if(document.layers) { // NN4.x
document.layers['linieX'].document.open();
document.layers['linieX'].document.write('49,95');
document.layers['linieX'].document.close();
}

Men til dit formål synes jeg et "back to basic" princip må være det
rette for størst mulig browser-kompatibilitet. Derfor synes jeg du skal
satse på en "DOM-0 formular-baseret løsning". Den vil også virke i Opera
og endnu ældre versioner af NN og IE.

<FORM name="pageform">
<INPUT type="text" name="prisfelt" width=6 readonly>
</FORM>

document.pageform.prisfelt = '49,95';

Jeg har gjort feltet readonly så det kun kan opdateres fra Javascript.
Bemærk også at jeg her adresserer på en måde der ligner din oprindelige
som jeg kaldte "grisseri". Det er fordi at vi her holder os indenfor den
såkaldte "DOM-0" (dvs. kun adresserer formularer, billeder og links) og
har navngivet elementerne med name-attributten (ikke id-attributten).
Dette er næsten alle browsere der kan JavaScript kompatible med.
OBS! Det er kun under disse specielle forhold (DOM-0 og
name-attributten) man bør addresere elementer på siden uden brug af
getElementById(), all[] eller layers[].


Mvh. Stig
stig@rockland.dk
* Bedre (D)HTML ?! --> http://www.rockland.dk/stig/upghtml.html *


Stig Nygaard (21-03-2002)
Kommentar
Fra : Stig Nygaard


Dato : 21-03-02 21:14

Hej igen



> document.pageform.prisfelt = '49,95';

skal være

document.pageform.prisfelt.value = '49,95';


Mvh. Stig
stig@rockland.dk
* Bedre (D)HTML ?! --> http://www.rockland.dk/stig/upghtml.html *


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste