Hallo J.P.Morgan,
Warum geht aber das nicht ?
Stichwort typenschwache Sprache. += ist, wie du ja richtig darlegst, im Gegensatz zu *= nicht eindeutig, kann also String-Verkettung oder Addition bedeuten. Um JS mitzuteilen, dass du an letzterem interessiert bist, musst du this.value als Integer casten, entweder, indem du sagst, this.value = parseInt(this.value) + 2, oder aber, weniger elegant ... = (this.value *1) + 2
onmousedown bedeutet 'in dem Moment, wo der Button unten ankommt', ist also nur ein Augenblick, nicht anders als bei onclick oder onmouseup auch. Wenn du ein onaslongasthemousebuttonispressed-Event haben willst, musst du das, zumindest, soweit ich weiss, selbst basteln. Das saehe dann etwa so aus:
onmousedown = starte eine Funktion, die zB. per setIntervall() irgendwas treibt
onmouseup = clearInterval() der Funktion
Gruß,
Dieter