[JS] de hoogste waarde van 4 meetellen

Pagina: 1
Acties:

  • DriesA
  • Registratie: December 2003
  • Laatst online: 16:52
Hey,
Ik heb het volgende formulier:
http://www.aendekerk.be/formulier.html
Dit dient om het nodige vermogen te bereken dat nodig is voor een airconditioning.
Maar het staat nog niet helemaal op punt.

In het eerste deel (Vensters, zonbestraald) kan de gebruiker verschillende zonrichtingen invullen ("oost + west", "ZO + ZW", "NO + NW" en "zuid"). Hij heeft in totaal vier mogelijkheden. Bij elke mogelijkheid kan hij (maximum) zes waardes invullen.

In de meest rechtste kolom verschijnen dan 4 totaalwaarden. Op dit moment worden alle 4 de waarden opgeteld en meegerekend in het totaal. Nu zou ik eigenlijk het volgende willen dat enkel de hoogste totaalwaarde mag bij het totaal worden opgeteld.

Weet iemand hoe ik dit kan inbouwen?

Bedankt!

Dries

I don't have hard drives. i just keep 30 chinese teenagers in my basement and force them to memorize numbers.


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

drm

f0pc0dert

JavaScript:
1
2
var a = [ 1234, 12, 342456, 345634, 345, 87645, 76, 345 ];
alert (a.sort().pop());

[ Voor 15% gewijzigd door drm op 09-03-2004 19:36 ]

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


  • DriesA
  • Registratie: December 2003
  • Laatst online: 16:52
Ik krijg een alert met "87645" als waarde. Moet dit niet "345634" zijn, of bedoelde je de hoogste waarde niet?

I don't have hard drives. i just keep 30 chinese teenagers in my basement and force them to memorize numbers.


  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10-2025
Klopt:
MSDN
default sort: the elements are sorted in ascending, ASCII character order
Maar zo zou ie het wel moeten doen:
code:
1
2
3
4
5
6
7
8
var a = [ 1234, 12, 342456, 345634, 345, 87645, 76, 345 ];
alert (a.sort(mysort).pop());

function mysort(a, b) {
      if(a < b) return -1;
      if(a == b) return 0;
      if(a > b) return 1;
}

[ Voor 15% gewijzigd door Amras op 09-03-2004 19:52 ]


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

drm

f0pc0dert

Dries_Aendekerk:
Ik krijg een alert met "87645" als waarde. Moet dit niet "345634" zijn, of bedoelde je de hoogste waarde niet?
Euh, ja, je hebt gelijk. Ik was iets te snel :)

Overigens kun je voor dergelijke zaken het beste even de javascript reference erop naslaan in plaats van MSDN. Bij MSDN weet je namelijk nooit zeker of het niet toevallig een IE implementatie is of dat het inderdaad ook in andere browsers werkt.

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


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:01

crisp

Devver

Pixelated

Vanuit functioneel oogpunt is een sort natuurlijk zwaar overkill; je hebt er niets aan dat de rest ook nog eens netjes gesorteerd wordt als je enkel het grootste element wilt bepalen, echter is het wel veel sneller dan een meer straight-forward aanpak:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Array.prototype.max = function() {

  var m = null, i = this.length;
  if (i) m = this[--i];
  while (i--) {
    if (this[i] > m) m = this[i];
  }

  return m;

}

var a = [ 1234, 12, 342456, 345634, 345, 87645, 76, 345 ];

alert(a.max());

Intentionally left blank


  • DriesA
  • Registratie: December 2003
  • Laatst online: 16:52
Ik heb het gisteravond tevergeefs proberen te implementeren in mijn formulier. Maar dat is me helaas niet gelukt.

Kan iemand me helpen?

Het zit zo:
(zie ook http://www.aendekerk.be/formulier.html)
Vier tekstvakjes ("b1x1_totaal", "b1x2_totaal", "b1x3_totaal", "b1x4_totaal") hebben een bepaalde (totaal)waarde (ingegeven door de gebruiker). Nu zou ik willen dat (onkeyup of zo) al die waardes op nul worden gezet, behalve de hoogste waarde.

Hoe speel ik dit klaar?

[ Voor 6% gewijzigd door DriesA op 10-03-2004 08:35 ]

I don't have hard drives. i just keep 30 chinese teenagers in my basement and force them to memorize numbers.


Verwijderd

Wat is er mis met Math.max()?
JavaScript:
1
2
3
with(Math) {
    var theMax = max( max(a, b), max(c, d) );
}

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

drm

f0pc0dert

Wat heb je al geprobeerd? Dit begint erg naar "los dit even voor me op" te rieken, namelijk.

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


  • DriesA
  • Registratie: December 2003
  • Laatst online: 16:52
Ik heb het volgende tevergeefs geprobeerd. Maar ik vrees dat het veel te omslachtig is, en tja, het werkt ook niet. :-/

code:
1
2
3
4
5
6
7
8
9
10
11
function grootste(b1x1_totaal, b1x2_totaal, b1x3_totaal ) {
      if(b1x1_totaal < b1x2_totaal) var b1x1_totaal = 0;
      if(b1x1_totaal < b1x3_totaal) var b1x1_totaal = 0;
      if(b1x2_totaal < b1x1_totaal) var b1x2_totaal = 0;
      if(b1x2_totaal < b1x3_totaal) var b1x2_totaal = 0;
      if(b1x3_totaal < b1x1_totaal) var b1x3_totaal = 0;
      if(b1x3_totaal < b1x2_totaal) var b1x3_totaal = 0;
  return b1x1_totaal;
  return b1x2_totaal;
  return b1x3_totaal;
}

I don't have hard drives. i just keep 30 chinese teenagers in my basement and force them to memorize numbers.


  • DriesA
  • Registratie: December 2003
  • Laatst online: 16:52
Tweede poging komt misschien beter in de buurt (maar staat nog niet op punt)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var highestValue = b1x1_totaal.value;
var highestNode = b1x1_totaal;

for(var i = 2; i <= 4; i++) {
 if(window['b1x'+i+'_totaal'].value > highestValue) {
  highestValue = window['b1x'+i+'_totaal'].value;
  highestNode = window['b1x'+i+'_totaal'];
 }
}

for(var i = 1; i <= 4; i++) {
 if(window['b1x'+i+'_totaal'] == highestNode) {
  continue;
 }
 else {
  window['b1x'+i+'_totaal'].value = "";
 }
}

I don't have hard drives. i just keep 30 chinese teenagers in my basement and force them to memorize numbers.


  • DriesA
  • Registratie: December 2003
  • Laatst online: 16:52
Hey,
Het probleem is ondertussen opgelost.
Toch bedankt!

(voor de geïnteresseerden: http://www.aendekerk.be/beta/airco/bereken.html)

I don't have hard drives. i just keep 30 chinese teenagers in my basement and force them to memorize numbers.


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

drm

f0pc0dert

choeso jei :Y) ik wist wel dat je het wel zelf kon :+

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

Pagina: 1