insertUnit: feld befüllen mit JavaScript

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • insertUnit: feld befüllen mit JavaScript

    Hallo,

    ich will ein Feld mit Javascript befüllen. Ich hab ein wenig gegooglet, viel brauchbares habe ich nicht gefunden, aber das eine:

    Quellcode

    1. <input type="text" id="number" />
    2. <a href="javascript:insertUnit(gid('number'), 10)">Klicken!</a>


    Irgendwie geht das bei mir aber nicht, irgendjemand eine ahnung?
  • Die Funktionen gid und insertUnit sind keine Standardfunktionen und existieren demzufolge nicht.
    Schau doch mal in die Firefox Fehlerkonsole. Dann solltest du die entsprechenden Fehlermeldungen sehen.

    Die Funktionen werden in etwa so aussehen:

    Quellcode

    1. /**
    2. * returns dom reference from element id
    3. * @param string id
    4. */
    5. function gid(id) {
    6. return document.getElementById(id);
    7. }
    8. /**
    9. * fills a formelement using value
    10. * @param object domref
    11. * @param string val
    12. */
    13. function insertUnit(domref, val) {
    14. if(domref !== null) {
    15. domref.value = val;
    16. }
    17. }
    Alles anzeigen
  • Danke, so etwas wollte ich. Habe nun etwas zusammenkopiert.

    Zwei Sachen hätte ich gerne noch:
    1. Könnte man das ganze irgendwie so zusammenfügen, dass man nur mehr eine Funktion hat
    2. Könnte man es irgendwie möglich machen, das bei den Zufallszahlen nicht die selben auf einmal erscheinen?

    Quellcode

    1. /**
    2. * returns dom reference from element id
    3. * @param string id
    4. */
    5. function gid(id) {
    6. return document.getElementById(id);
    7. }
    8. /**
    9. * fills a formelement using value
    10. * @param object domref
    11. * @param string val
    12. */
    13. function insertUnit(domref, val) {
    14. if(domref !== null) {
    15. domref.value = val;
    16. }
    17. }
    18. function randomNumber(){
    19. return Math.round(Math.random()/(1/45));
    20. }
    21. function fill() {
    22. insertUnit(gid('number1'), randomNumber());
    23. insertUnit(gid('number2'), randomNumber());
    24. insertUnit(gid('number3'), randomNumber());
    25. insertUnit(gid('number4'), randomNumber());
    26. insertUnit(gid('number5'), randomNumber());
    27. insertUnit(gid('number6'), randomNumber());
    28. }
    Alles anzeigen


    Quellcode

    1. <a href="javascript:fill()">Klicken</a>

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von xxx ()

  • Ph99Ph schrieb:

    1. Könnte man das ganze irgendwie so zusammenfügen, dass man nur mehr eine Funktion hat
    2. Könnte man es irgendwie möglich machen, das bei den Zufallszahlen nicht die selben auf einmal erscheinen?


    Verstehe die Frage nicht - du willst alles in einer Funktion haben? Wo ist das Problem? ;)
    Damit die selben Zufallszahlen nicht mehrfach verwendet werden, musst du dir die verwendeten in einer globalen Variablen speichern

    irgendwie so.. (ungetestet)

    Quellcode

    1. var used = [];
    2. function singlerandom() {
    3. var x = randomNumber();
    4. for(var i=0; i<used.length; i++) {
    5. if(used[i] == x) {
    6. return singlerandom();
    7. }
    8. }
    9. used.push(x);
    10. return x;
    11. }
    Alles anzeigen
  • Hallo,

    habe das mal ganz einfach dazu kopiert:

    Quellcode

    1. /**
    2. * returns dom reference from element id
    3. * @param string id
    4. */
    5. function gid(id) {
    6. return document.getElementById(id);
    7. }
    8. /**
    9. * fills a formelement using value
    10. * @param object domref
    11. * @param string val
    12. */
    13. function insertUnit(domref, val) {
    14. if(domref !== null) {
    15. domref.value = val;
    16. }
    17. }
    18. function randomNumber(){
    19. var used;
    20. function singlerandom() {
    21. var x = randomNumber();
    22. for(var i=0; i<used.length; i++) {
    23. if(used[i] == x) {
    24. return singlerandom();
    25. }
    26. }
    27. used.push(x);
    28. return x;
    29. }
    30. }
    31. function fill() {
    32. insertUnit(gid('number1'), randomNumber());
    33. insertUnit(gid('number2'), randomNumber());
    34. insertUnit(gid('number3'), randomNumber());
    35. insertUnit(gid('number4'), randomNumber());
    36. insertUnit(gid('number5'), randomNumber());
    37. insertUnit(gid('number6'), randomNumber());
    38. }
    Alles anzeigen


    Bekomme aber immer undefined in meine Textfelder eingefügt.

    Sorry, aber ich kenne mich mit Javascript überhaupt nicht aus. Kannst du mir vielleicht ein gutes Medium zum Lernen empfehlen? :)
  • Ich weiß ja ehrlich gesagt nicht, wie du auf die Idee mit der Funktion innerhalb der Funktion kommst ;)
    Literatur zu JavaScript findest du hier: Literatur zu HTML, JavaScript, CSS

    Zur Lösung:
    Deine Fill Funktion muss auf singlerandom zugreifen:

    Quellcode

    1. function fill() {
    2. insertUnit(gid('number1'), singlerandom());


    und randomNumber und singlerandom sind zwei getrennte Funktionen:

    Quellcode

    1. function randomNumber() {
    2. return Math.round((Math.random() * 10));
    3. }
    4. var used = [];
    5. function singlerandom() {
    6. var x = randomNumber();
    7. ...


    Lg
  • Erstmal danke für deine Mithilfe, doch leider gibt es noch immer undefined in den Textfeldern:

    Quellcode

    1. /**
    2. * returns dom reference from element id
    3. * @param string id
    4. */
    5. function gid(id) {
    6. return document.getElementById(id);
    7. }
    8. /**
    9. * fills a formelement using value
    10. * @param object domref
    11. * @param string val
    12. */
    13. function insertUnit(domref, val) {
    14. if(domref !== null) {
    15. domref.value = val;
    16. }
    17. }
    18. function randomNumber() {
    19. return Math.round((Math.random() * 10));
    20. }
    21. var used = [];
    22. function singleRandom() {
    23. var x = randomNumber();
    24. var used;
    25. function singleRandom() {
    26. var x = randomNumber();
    27. for(var i=0; i<used.length; i++) {
    28. if(used[i] == x) {
    29. return singleRandom();
    30. }
    31. }
    32. used.push(x);
    33. return x;
    34. }
    35. }
    36. function fill() {
    37. insertUnit(gid('number1'), singleRandom());
    38. insertUnit(gid('number2'), singleRandom());
    39. insertUnit(gid('number3'), singleRandom());
    40. insertUnit(gid('number4'), singleRandom());
    41. insertUnit(gid('number5'), singleRandom());
    42. insertUnit(gid('number6'), singleRandom());
    43. }
    Alles anzeigen


    Und noch etwas: Wie kann ich den Link ausblenden, wenn kein Javascript aktiv ist?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von xxx ()

  • Ohne jetzt Fachman für Java-Script zu sein, aber was soll das denn:?

    Quellcode

    1. var used = [];
    2. function singleRandom() {
    3. var x = randomNumber();
    4. var used;
    5. function singleRandom() {
    6. var x = randomNumber();
    7. for(var i=0; i<used.length; i++) {
    8. if(used[i] == x) {
    9. return singleRandom();
    10. }
    11. }
    12. used.push(x);
    13. return x;
    14. }
    15. }
    Alles anzeigen

    Warum erzeugst du innerhalb einer Funktion eine neue Funktion? Kann JavaScript sowas überhaupt? Und warum hat die dann auch noch den gleichen Namen?