[JavaScript] Variabele controleren op type

Pagina: 1
Acties:

  • bwiep
  • Registratie: September 2000
  • Niet online

bwiep

Bla Bla Bla..

Topicstarter
Ik wil in een javascriptje een bepaalde variabele controleren of het bv van het type int is...

Onder java kun je dat met [variabele].isInt() doen.. maar dit werkt niet onder javascript..

Iemand idee hoe dit wel moet?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:48

crisp

Devver

Pixelated

code:
1
if (var == parseInt(var)) alert('var is een integer!');

Intentionally left blank


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 16:38

Pelle

🚴‍♂️

Met de typeof-functie moet je wel een eind komen :)
code:
1
2
3
4
5
6
7
8
9
10
11
var a = "blaat";
var b = 169;
var c = [];
c[0]  = "melp";
c[1]  = 1114;

alert(typeof(a));
alert(typeof(b));
alert(typeof(c));
alert(typeof(c[0]));
alert(typeof(c[1]));

  • bwiep
  • Registratie: September 2000
  • Niet online

bwiep

Bla Bla Bla..

Topicstarter
Op vrijdag 12 juli 2002 11:52 schreef crisp het volgende:
code:
1
if (var == parseInt(var)) alert('var is een integer!');
Hierbij is het altijd een integer, ook al vul ik de variabele met 'a' :?

  • bwiep
  • Registratie: September 2000
  • Niet online

bwiep

Bla Bla Bla..

Topicstarter
Op vrijdag 12 juli 2002 11:53 schreef Pelle het volgende:
Met de typeof-functie moet je wel een eind komen :)
code:
1
2
3
4
5
6
7
8
9
10
11
var a = "blaat";
var b = 169;
var c = [];
c[0]  = "melp";
c[1]  = 1114;

alert(typeof(a));
alert(typeof(b));
alert(typeof(c));
alert(typeof(c[0]));
alert(typeof(c[1]));
Het probleem dat dit niet werkt is, dat ik de variabele vul vanuit een input veld. Dus das altijd text :(

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 16:38

Pelle

🚴‍♂️

parseInt() geeft NaN terug als iets geen int is.

Run dit maar eens:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
var a = "lerp";
var b = "169";
var c = "123.456";

alert(typeof(a));
alert(parseInt(a));

alert(typeof(b));
alert(parseInt(b));

alert(typeof(c));
alert(parseInt(c));
alert(parseFloat(c));

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

Als het uit een input komt kan je het beste met regexp werken,
code:
1
2
3
4
5
6
7
8
9
10
11
getal = "^[0-9]+$";
woord = "^[a-zA-Z]+$";

function regCheck(val, reg) {
   return (new RegExp(reg).exec(val))? true:false;
}

alert(regCheck('abcd', getal));
alert(regCheck('abcd', woord));
alert(regCheck('1234', getal));
alert(regCheck('1234', woord));

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


Verwijderd

Op vrijdag 12 juli 2002 12:04 schreef bwiep het volgende:

[..]

Het probleem dat dit niet werkt is, dat ik de variabele vul vanuit een input veld. Dus das altijd text :(
Ja, dan is het altijd een string. Wat je dus eigenlijk wil weten is of er andere karakters in voorkomen dan [0-9]...
code:
1
2
3
4
5
6
function testStringInt( sInt ) {
    var the_test = /\D/;
    return the_test.test(sInt);
    // true als string non-digit karakters bevat

}

Dit zou kunnen werken, maar ik weet het niet zeker :o

  • bwiep
  • Registratie: September 2000
  • Niet online

bwiep

Bla Bla Bla..

Topicstarter
Op vrijdag 12 juli 2002 12:24 schreef Clay het volgende:
Als het uit een input komt kan je het beste met regexp werken,
code:
1
2
3
4
5
6
7
8
9
10
11
getal = "^[0-9]+$";
woord = "^[a-zA-Z]+$";

function regCheck(val, reg) {
   return (new RegExp(reg).exec(val))? true:false;
}

alert(regCheck('abcd', getal));
alert(regCheck('abcd', woord));
alert(regCheck('1234', getal));
alert(regCheck('1234', woord));
Dis ook altijd true???

  • bwiep
  • Registratie: September 2000
  • Niet online

bwiep

Bla Bla Bla..

Topicstarter
Niemand meer een ander oplossing??? :?

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 16:38

Pelle

🚴‍♂️

Je topic omhoog kicken doe je pas na 24 uur hier, en niet als je 2.5 uur geen nieuwe reacties meer hebt gehad. Je krijgt hier genoeg handvatten aangereikt om je probleem op te lossen.

  • bwiep
  • Registratie: September 2000
  • Niet online

bwiep

Bla Bla Bla..

Topicstarter
Op vrijdag 12 juli 2002 16:13 schreef Pelle het volgende:
Je topic omhoog kicken doe je pas na 24 uur hier, en niet als je 2.5 uur geen nieuwe reacties meer hebt gehad. Je krijgt hier genoeg handvatten aangereikt om je probleem op te lossen.
Sorry hoor, ik was er op dat moment heel erg mee bezig en moest snel opgelost worden als dat mogelijk zou zijn.

Maar die handvatten die aangereikt zijn die doen het niet :( dus ja, ik zoek nog steeds verder..

  • Speedpete
  • Registratie: December 2001
  • Laatst online: 07-08 11:30

Speedpete

was barman

Liever laat dan nooit :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var1 = "hoi";
var2 = "10";
var3 = "10,1";
var4 = "10.1";

if(isNaN(var1))
    document.write(var1 + " is geen nummer<BR>")
else
    document.write(var1 + " is een nummer<BR>")

if(isNaN(var2))
    document.write(var2 + " is geen nummer<BR>")
else
    document.write(var2 + " is een nummer<BR>")

if(isNaN(var3))
    document.write(var3 + " is geen nummer<BR>")
else
    document.write(var3 + " is een nummer<BR>")

if(isNaN(var4))
    document.write(var4 + " is geen nummer<BR>")
else
    document.write(var4 + " is een nummer<BR>")

levert netjes op:
code:
1
2
3
4
hoi is geen nummer
10 is een nummer
10,1 is geen nummer
10.1 is een nummer

Voor ints kan je het nummer dan nog op puntjes checken.

Object-oriented programming offers a sustainable way to write spaghetti code | Hoe vleugels wel werken.


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

code:
1
2
3
if ( !isNaN(parseInt(nr)) ) {
   // is nummertje
}

isNaN is gewoon een bestaande functie. Maar goed.. hiermee vervorm je wel eerst je waarde natuurlijk.

De enige goede methode is imho door een eigenschapje toe te voegen aan het Number prototype:
code:
1
2
3
4
5
6
7
Number.prototype.isNumber = true;

nr1 = 100;
nr2 = "100";

alert ( nr1.isNumber );
alert ( nr2.isNumber );

de tweede geeft undefined (het is geen Number object dus hij kent de property isNumber niet). Hier is dus simpel op te checken en werkt altijd.

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

Op vrijdag 12 juli 2002 13:36 schreef bwiep het volgende:

[..]

Dis ook altijd true???
Nee. dit geeft 4 alerts. false, true, true, false.

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Clay:
Als het uit een input komt kan je het beste met regexp werken,
code:
1
2
3
4
5
6
getal = "^[0-9]+$";
woord = "^[a-zA-Z]+$";

function regCheck(val, reg) {
   return (new RegExp(reg).exec(val))? true:false;
}
Misschien nog wel een handig tipje, je kunt RegExp objecten gewoon instantieren op deze manier:
code:
1
2
getal = /^[0-9]+$/;
woord = /^[a-zA-Z]+$/;

en dan zo checken
code:
1
2
3
4
alert ( getal.test ( 'abcd' ) );
alert ( woord.test ( 'abcd' ) );
alert ( getal.test ( '1234' ) );
alert ( woord.test ( '1234' ) );

imo iets netter.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • André
  • Registratie: Maart 2002
  • Laatst online: 13:14

André

Analytics dude

Uitbreiding op Bosmonster:
code:
1
2
3
4
5
6
7
8
Number.prototype.isType = "Number";
String.prototype.isType = "String";

nr1 = 100;
nr2 = "100";

alert ( nr1.isType );
alert ( nr2.isType );

Verwijderd

Op woensdag 17 juli 2002 09:10 schreef Yogho het volgende:
Uitbreiding op Bosmonster:
code:
1
2
3
4
5
6
7
8
Number.prototype.isType = "Number";
String.prototype.isType = "String";

nr1 = 100;
nr2 = "100";

alert ( nr1.isType );
alert ( nr2.isType );
Wat is er mis met typeof?
code:
1
2
3
4
5
6
var num = 1138;
var str = 'Blues';
var flt = 3.14;
alert(typeof num); // 'number'
alert(typeof str); // 'string'
alert(typeof flt); // 'number'

:P

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

Wat is er mis met typeof?
code:
1
2
3
4
5
6
var num = 1138;
var str = 'Blues';
var flt = 3.14;
alert(typeof num); // 'number'
alert(typeof str); // 'string'
alert(typeof flt); // 'number'

:P
bwiep
Het probleem dat dit niet werkt is, dat ik de variabele vul vanuit een input veld. Dus das altijd text
dat is er mis met typeof :)

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • André
  • Registratie: Maart 2002
  • Laatst online: 13:14

André

Analytics dude

Op woensdag 17 juli 2002 09:49 schreef Blues (notabene dhtml goeroe) ;) het volgende:

Wat is er mis met typeof?
Even lezen, want hij vult de variabele met een textbox. Dus als hij in de textbox "100" intiept dan geeft typeof een string terug.

Verwijderd

Op woensdag 17 juli 2002 09:10 schreef Yogho het volgende:
Uitbreiding op Bosmonster:
code:
1
2
3
4
5
6
7
8
Number.prototype.isType = "Number";
String.prototype.isType = "String";

nr1 = 100;
nr2 = "100";

alert ( nr1.isType );
alert ( nr2.isType );
Ik bedoelde meer dat dit stukje code niks toevoegt wat typeof niet kan...

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Blues:
Ik bedoelde meer dat dit stukje code niks toevoegt wat typeof niet kan...
idd, dan zou ik er zoiets van maken:
code:
1
2
3
4
5
6
7
Object.prototype.instanceOf = function ( type ) {
   var tmp;
   return typeof ( tmp = this.constructor () ) == type;
}

alert ( 'blaat'.instanceOf ( 'string' ) );
alert ( (12.12).instanceOf ( 'number' ) );

of... bestaat die al :? :D

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1