abonnement Unibet Coolblue Bitvavo
pi_46081008
quote:
Op woensdag 7 februari 2007 17:30 schreef koekiemonster het volgende:
help?
Niet al te ongeduldig doen he.


Met String.replace() en een regexp moet je een heel eind kunnen komen.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_46084588
Leuke vraag denk ik:

Stel ik wil een POPUP op een website en deze popup wil ik maar 1x laten zien! nu hebben genoeg mensen een popup blokker dus als mensen de pagina reloaden dan krijgen ze de popup niet meer te zien. Nu wil ik alleen de popup laten verdwijnen als de popup daadwerkelijk is geopend.. hoe realiseer ik dit?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  woensdag 7 februari 2007 @ 20:03:09 #33
87845 SynchroSteve
Synchronous Insane
pi_46084916
quote:
Op woensdag 7 februari 2007 19:50 schreef Chandler het volgende:
Leuke vraag denk ik:

Stel ik wil een POPUP op een website en deze popup wil ik maar 1x laten zien! nu hebben genoeg mensen een popup blokker dus als mensen de pagina reloaden dan krijgen ze de popup niet meer te zien. Nu wil ik alleen de popup laten verdwijnen als de popup daadwerkelijk is geopend.. hoe realiseer ik dit?
Met een cookie?
pi_46096459
Cookie wordt toch ook aangemaakt wanneer de popup zich niet laat zien?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  donderdag 8 februari 2007 @ 09:51:32 #35
85514 ralfie
!Yvan eht nioj
pi_46097051
quote:
Op donderdag 8 februari 2007 09:25 schreef Chandler het volgende:
Cookie wordt toch ook aangemaakt wanneer de popup zich niet laat zien?
Je kunt de popup het koekje laten bakken
pi_46108906
true true, ik zal er eens naar kijken
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_46296097
Een andere vraag.

Ik heb de volgende scripts

popback.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script language="javascript">
function popUp()
{
    day = new Date();
    id = day.getTime();
    window['page'+id] = window.open('popback1.html', id , 'toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=0');
}
</script>

<form method="post" name="userinfo">
    <input type="text" name="name"><br/>
    <input type="text" name="cijfer"> - <a href="#" onClick="javascript:popUp();">Select</a><br/>
    <input type="submit" name="send" value="Verstuur">
</form>


en popback1.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script language="javascript">
function returnVariable(formName, fieldName, content)
{
  opener.document.forms[formName].elements[fieldName].value = content;
}

function wclose()
{
    window.close();
}
</script>

<form name="cijfertjes">
    <input type="text" name="cijfer"> 
    <input type="submit" name="Verzend" onclick="returnVariable('userinfo','cijfer',  this.form.elements['cijfer'].value); wclose();">
</form>


Nu wil ik eingelijk het volgende.. De popup zit nu vast aan 1 veld, maar ik zou eingelijk variabelen mee willen geven aan de popup zodat ik de return veld variabel kan maken.

Heeft iemand een idee

ook van wat ik bedoel?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  woensdag 14 februari 2007 @ 14:40:47 #38
85514 ralfie
!Yvan eht nioj
pi_46296526
je kunt je variabelen in de url meegeven, een beetje zoals php en $_GET:

1
2
3
//popback.html
var returnvar='cijfer';
...window.open('popback1.html?returnvar='+returnvar...

en deze dan uitlezen dmv substrings vanaf window.location.href

óf je leest de variabele rechtstreekt uit van de opener:
1
2
//popback1.html
onclick=returnvariable(opener.returnform, opener.returnvar, this.form.elements['cijfer'].value)"

Waar returnform en returnvar de variablen in de opener zijn met de juiste waarden:;
1
2
3
//popback.html
var returnform='userinfo';
var returnvar='cijfer';
pi_46302126
Ik heb nu dit

1
2
3
4
5
6
7
8
9
10
11
12
<script language="javascript">
function colPalet(value)
{
    day = new Date();
    id  = day.getTime();

    var retvalue = value;

    window['page'+id] = window.open('./layout/layout_colors.html?varname=' + value, id , 'width=300,height=200,toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=0');

}
</script>


en dan de popup

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script language="javascript">
function returnVariable(fieldName, content)
{
  opener.document.forms['colortable'].elements[fieldName].value = content;
}

function wclose()
{
    window.close();
}

function SendColor(value)
{
    alert(opener.retvalue);
    returnVariable(opener.varname, value)
}
</script>

<MAP name=map_webpal>

<!--- Row 1 --->

<AREA shape=RECT coords=2,2,18,18 href="javascript:SendColor('#330000')">
... etc


maar krijg een undefined te zien bij de alert in FF en IE :X why?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  woensdag 14 februari 2007 @ 18:33:30 #40
85514 ralfie
!Yvan eht nioj
pi_46302472
Je definieert retvalue in een functie... Zelfs een simpele taal als Javascript kent scoping
pi_46303864
omg, je hebt gelijk... heb het nu anders aangepakt en gewoon een variabel gezet in de geopende window

bv (even uit het hoofd)

opener.valuename = 'value';

The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_46492580
Ik heb een textbox met als value een datum in het volgende formaat:
1DD-MM-YYYY

Nu wil ik de dag die er op volgt weten, en weer terugschrijven. Mijn code:
1
2
3
4
5
6
7
var currentdate = document.getElementById('chosendate').value;
var newdate = new Date(currentdate.substring(6,10), currentdate.substring(3,5) - 1, currentdate.substring(0,2));
newdate.setTime(newdate.getTime() - 86400000);
newday = newdate.getDate();
newmonth = newdate.getMonth() +1;
newyear = newdate.getFullYear();
changevalue(newday + "-" + newmonth + "-" + newyear,'chosendate');


Het werkt prima, het enige nadeel van getDate en getMonth is dat ze er geen nul voor plakken wanneer de integer uit 1 digit bestaat (januari = 1, moet 01 zijn). Moet ik hier met een lapje code handmatig een 0 aan plakken, of is er een variant op getDate en getMonth?

Edit

Dat kon nog korter dan ik dacht
1
2
if (newday<=9) newday = "0" + newday;
if (newmonth<=9) newmonth = "0" + newmonth;


En voor de nieuwsgierige personen de volledige code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function dateButtons(dir){
   var currentdate = document.getElementById('chosendate').value;
   var newdate = new Date(currentdate.substring(6,10), currentdate.substring(3,5) - 1, currentdate.substring(0,2));

   if (dir == 'left')
      newdate.setTime(newdate.getTime() - 86400000);
   
   else if (dir == 'right')
      newdate.setTime(newdate.getTime() + 86400000);
   

   newday = newdate.getDate();
   if (newday<=9) newday = "0" + newday;
   newmonth = newdate.getMonth() +1;
   if (newmonth<=9) newmonth = "0" + newmonth;
   newyear = newdate.getFullYear();

   changevalue(newday + "-" + newmonth + "-" + newyear,'chosendate');
}


[ Bericht 35% gewijzigd door Geqxon op 20-02-2007 16:14:23 ]
pi_46508061
Javascript heeft standaard geen formatting functies, eigenlijk best onhandig. Ik heb deze functies een keer gemaakt. Ik ze nooit echt gebruikt, en ook niet grondig getest.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*
   Converts the date to string using provided formatting.
   %D = full date (%d/%m/%Y)
   %T = full time (%H:%i:%s)
   %Y = year (4 digits)
   %y = year (2 digits)
   %m = month (01 - 12)
   %d = day (01 - 31)
   %H = hours (01 - 24)
   %h = hours (01 - 12)
   %i = minutes (01 - 59)
   %s = seconds (01 - 59)
   %A = AM/PM
   %% = %
*/
Date.prototype.format = function(format) {
   format = format.replace(/%D/g, "%d/%m/%Y");
   format = format.replace(/%T/g, "%H:%M:%S");

   format = format.replace(/%Y/g, this.getFullYear());
   format = format.replace(/%y/g, (this.getFullYear() % 100).toString().padLeft(2, '0'));
   format = format.replace(/%m/g, (this.getMonth () + 1).toString().padLeft(2, '0'));
   format = format.replace(/%d/g, this.getDate().toString().padLeft(2, '0'));

   format = format.replace(/%H/g, this.getHours().toString().padLeft(2, '0'));
   format = format.replace(/%h/g, ((this.getHours() + 11) % 12 + 1));
   format = format.replace(/%i/g, this.getMinutes().toString().padLeft(2, '0'));
   format = format.replace(/%s/g, this.getSeconds().toString().padLeft(2, '0'));
   format = format.replace(/%A/g, (this.getHours() < 12 ? "AM" : "PM"));
   format = format.replace("%%", "%");

   return format;
}

/*
   Pads a string on the left to a certain length with another string.
*/
String.prototype.padLeft = function(length, padding) {
   if (padding == '' || padding == null) padding = ' ';
   var result = this;
   var n = (length - this.length);
   if (n > 0) {
      while (padding.length < n) {
         padding += padding;
      }
      result = padding + result;
      result = result.substr(length - result.length);
   }
   return result;
}


1
2
3
var d = new Date();
var s = d.format('%D %T');
alert(s);


Date.format() kan ook nog wel wat geoptimaliseerd worden
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_46510286
Mooie functie, die gaat even gebookmarked worden

Voor simpele dingen om bijvoorbeeld binnen een functie de huidige datum te verkrijgen (in bovenstaand formaat), gebruik ik PHP
  FOK!-Schrikkelbaas dinsdag 27 februari 2007 @ 16:04:18 #45
1972 Swetsenegger
Egocentrische Narcist
pi_46735494
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
   <head>
      <title>test</title>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
      <script type="text/javascript">
      document.getElementById('display').innerHTML= 'test';
      </script>
   </head>
   <body>
      <div id="display" name="display">
         leeg
      </div>
   </body>
</html>
quote:
document.getElementById('display') has no properties
Ik begrijp niet wat ik fout doe?
pi_46735636
Zo uit mijn hoofd zou ik zeggen dat het niet werkt omdat het javascript uitgevoerd wordt nog voordat de div "display" op het scherm getekend is / geinitialiseerd is. Misschien er een functie van maken, en die in de onload gooien?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
   <head>
      <title>test</title>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
      <script type="text/javascript">
         function test(){
               document.getElementById('display').innerHTML= 'test';
         }
      </script>
   </head>
   <body onload="test()">
      <div id="display" name="display">
         leeg
      </div>
   </body>
</html>
  FOK!-Schrikkelbaas dinsdag 27 februari 2007 @ 16:09:51 #47
1972 Swetsenegger
Egocentrische Narcist
pi_46735708
quote:
Op dinsdag 27 februari 2007 16:08 schreef Geqxon het volgende:
Zo uit mijn hoofd zou ik zeggen dat het niet werkt omdat het javascript uitgevoerd wordt nog voordat de div "display" op het scherm getekend is / geinitialiseerd is. Misschien er een functie van maken, en die in de onload gooien?
Dit is de versimpelde versie, hij wordt aangeroepen door een functie die na een submit wordt aangeroepen.
pi_46735788
Weet je zeker dat het niet ergens anders in zit? De code zoals ik die aan mijn post gehangen heb werkt onder Safari 2.0 namelijk prima, foutloos.
pi_46736912
edit, lezen.

Ik heb trouwen geen probs met je script, werkt direct, misschien toch ff de volledige code?

[ Bericht 83% gewijzigd door Darkomen op 27-02-2007 16:46:38 ]
  FOK!-Schrikkelbaas dinsdag 27 februari 2007 @ 16:58:37 #50
1972 Swetsenegger
Egocentrische Narcist
pi_46737722
Opgelost, klein foutje met returns
pi_46740711
Gaaf m'n op gebruikt (tevens tvp )
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 08:49:48 #52
1972 Swetsenegger
Egocentrische Narcist
pi_46762296
Nieuw probleem.
Uit een form komen een paar values die ik met de volgende regel code naar een textarea schrijf:

1document.getElementById('display').innerHTML+= '0000'+form.kenmerk.value+form.gba.value+form.bsn.value+'\r\n';

uiteraard met enkele slashes, maar dit om de fokbug te vermijden
Dat gaat goed, in mijn textarea verschijnt elke invoer netjes regel voor regel op een newline.
Maaaar... deze textarea moet uiteindelijk naar een txt file geschreven worden, waarvoor ik de v olgende code gebruik

1
2
3
4
5
6
7
function WriteToFile(sText)
      {
      var fso = new ActiveXObject("Scripting.FileSystemObject");
      var FileObject = fso.OpenTextFile("C:\Temp\PimFile.txt", 2, true,0); // 8=append, true=create if not exist, 0 = ASCII
      FileObject.write(sText)
      FileObject.close()
      }

Deze schrijft prachtig naar een txt file, maar mijn newlines zijn weg :?
Als ik in dezelfde textarea tussen 2 regels in ga staan, de door mijn code gegenereerde newline weghaal en een harde enter geef... doet hij het wel.

Iemand een idee hoe dit op te lossen?
pi_46762601
En hoe roep je sText aan, met een "this.value" ?

Als workaround zou je kunnen werken met een string replace:
1
2
inhoud = new String(sText);
inhoud.replace("n","rn");
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 09:15:57 #54
1972 Swetsenegger
Egocentrische Narcist
pi_46762685
quote:
Op woensdag 28 februari 2007 09:10 schreef Geqxon het volgende:
En hoe roep je sText aan, met een "this.value" ?

Als workaround zou je kunnen werken met een string replace:
[ code verwijderd ]
nee met document.naam.value
Ja ik heb in de WriteToFile functie de volgende regel toegevoegd

1sText = sText.replace(/\n/g,"test")


zowel met \n als \r\n geprobeerd.
Maar er wordt geen newline gevonden, er staat een spatie....
Hmz, eens kijken of hij die wel vind
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 09:16:55 #55
1972 Swetsenegger
Egocentrische Narcist
pi_46762706
hij kan ik trouwens een string aanvullen met 0'en tot een bepaalde lengte?
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 09:22:51 #56
1972 Swetsenegger
Egocentrische Narcist
pi_46762802
dit werkt
1sText = sText.replace(/\s+/g,"\r\n")

wazig, maar goed.
  woensdag 28 februari 2007 @ 09:24:40 #57
12880 CraZaay
prettig gestoord
pi_46762838
Stomme vraag misschien, maar waarom gebruik je de Level 0 DOM en Level 1 DOM door elkaar? Is het niet logischer om alleen de Level 1 DOM te gebruiken, omdat die toch minimaal nodig is om je script uit te voeren?

Niet dat de Level 0 DOM niet ondersteunt wordt door alle browsers die ook 1 ondersteunen hoor, maar ik gebruik ze persoonlijk ter consistentie niet door elkaar. Of ben ik een purist?
pi_46762848
quote:
Op woensdag 28 februari 2007 09:16 schreef Swetsenegger het volgende:
hij kan ik trouwens een string aanvullen met 0'en tot een bepaalde lengte?
1
2
3
4
5
6
7
8
var pad = '0';
var teststring = 'jan';
var padlength = 20;
var stringlength = teststring.length;

for (var i = 0; i <  (padlength - stringlength); i++){
   teststring += pad;
}


Zo uit mijn hoofd, moet het nog even debuggen. Helaas heeft javascript niet een soort van str_pad (string pad), in ieder geval niet voor zover ik dat kan zien.

/edit: Denkfoutje gefixt.
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 09:56:59 #59
1972 Swetsenegger
Egocentrische Narcist
pi_46763576
quote:
Op woensdag 28 februari 2007 09:25 schreef Geqxon het volgende:

[..]
[ code verwijderd ]

Zo uit mijn hoofd, moet het nog even debuggen. Helaas heeft javascript niet een soort van str_pad (string pad), in ieder geval niet voor zover ik dat kan zien.

/edit: Denkfoutje gefixt.
Ah ok, er is geen standaard functie dus
pi_46764147
En dan nog ingekort vanwege mijn drang naar perfectie:

1
2
3
4
5
6
7
var pad = '0';
var teststring = 'jan';
var padlength = 20;

while (teststring.length < padlength){
   teststring += pad;
}
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')