Funktion: var/inhalt-Zuweisung?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Funktion: var/inhalt-Zuweisung?

    Hallo,

    ich übergebe 2 Parameter an die JS-Funktion.
    Die Werte kommen auch an, habe aber ein Problem bei "var str ..."
    Ich möchte, dass für f nicht "f" (Buchstabe) zugewiesen wird, sondern der Inhalt (Wert) von f (der übergeben wurde)...

    Die Funktion wird so aufgerufen:
    insert_style("style1","textfeld1");

    Danke für eure Hilfe!

    dreman


    Code:
    function insert_style(val,f){
    	try {
    		if (document.selection){
    			var feldname=f;
    			alert("Ergebnis: " + feldname);
    
    			var str = document.selection.createRange().f;
    	 		//alert("Ergebnis: " + str);
                        }
                    
              }
                 catch(e){}
    }

  • #2
    Re: Funktion: var/inhalt-Zuweisung?

    Original geschrieben von dreman
    Ich möchte, dass für f nicht "f" (Buchstabe) zugewiesen wird, sondern der Inhalt (Wert) von f (der übergeben wurde)...
    Bitte was?


    Wenn du direkt auf des Feld zugreifen willst, dann übergebe nicht seinen Namen, sondern die Referenz auf das Feld.
    Wenn du diese nicht zur Verfügung hast, dann übergeben doch den Namen/die ID/wasauchimmern, und ermittle sie mit getElementsByName(), getElementById(), über das elements-Objekt, o.ä.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Habe leider fast 0-Ahnung von JS, kann dir deshalb leider nicht so recht folgen....

      Hast du eine Beispiel?

      Danke, dreman

      Kommentar


      • #4
        Ahnung von Javascript kann man sich z.B. dort besorgen: http://de.selfhtml.org/javascript/
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Danke für den Link.

          Also, ich komme da irgendwie nicht weiter.
          In alert steht immer "objekt[]text" (text ist der Feldname)

          Code:
          function insert_style(val,f){
            try {
                if (document.selection){
                  var str = document.selection.createRange() +f; // ???
                  alert("Ergebnis: " + str); 
                  var auswahl = document.selection.createRange();
                  auswahl.f = "[" + val + "]" + str + "[/" + val + "]";
                  return;
               }
           }
             catch(e) {
           }
          }
          Das mit getElementByID() geht nicht. Ich weiß vorher nicht wie das Feld (f) heißt...

          Zuletzt geändert von dreman; 21.02.2006, 12:03.

          Kommentar


          • #6
            Original geschrieben von dreman
            In alert steht immer "objekt[]text" (text ist der Feldname)
            Natürlich. Daran sollte dich nichts wundern - document.selection.createRange() ist nun mal nichts, was sich als Text ausgeben liesse, also ergibt der Versuch der Ausgabe nur [object] o.ä.
            Und daran hängst du dann den Namen des Textfeldes an - das ergibt diese Ausgabe.
            Das mit getElementByID() geht nicht. Ich weiß vorher nicht wie das Feld (f) heißt...
            Wieso das denn nicht? Du hast den Namen doch bisher beim Aufruf der Funktion mitgegeben.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Stimmt, kleiner Denkfehler von mir.

              Also könnte man es so machen:
              Oder wie?

              form.php
              Code:
              [...]
              <textarea name="txt" id="txt">Bla</textarea>
              [...]
              jsfile.js
              Code:
              [...]
              var str = document.selection.createRange().getElementByID(+f+);
              [...]
              Wie ist denn da die richtge Reihenfolge?
              Oder muss ich getElementByID() in eine var schreiben?

              dreman

              Kommentar


              • #8
                Original geschrieben von dreman
                Wie ist denn da die richtge Reihenfolge?
                Was willst du denn überhaupt erreichen?

                Mir ist z.B. nicht klar, was du überhaupt mit dem selection.createRange() bezwecken willst an dieser Stelle ...
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Also:
                  Ich fange noch mal von Vorne an - Habs an Anfang schlecht erklärt...:

                  Habe mir diesen Code von http://aktuell.de.selfhtml.org/tipps...script/bbcode/ geholt

                  Diese Funktion macht schon genau was ich will. Habe ich leider erst jetzt gefunden.

                  ABER:
                  Ich habe in meinem Formular mehrere Textareas und möchte für jede Textarea die Linkfunktion nutzen...
                  Deshalb übergebe ich zusaätzlich den parameter f und ...
                  es klappt nicht...

                  Habe ich schon in der ersten Zeile der Funktion versucht...
                  Es geht aber nicht... ich weiß leider nicht warum...


                  Code:
                  function insert(aTag, eTag, f) {
                    //var input = document.forms['formular'].eingabe;
                    var input = document.forms['formular'].getElementByName(+ f +);
                    input.focus();
                  
                  
                    /* für Internet Explorer */
                    if(typeof document.selection != 'undefined') {
                      /* Einfügen des Formatierungscodes */
                      var range = document.selection.createRange();
                      var insText = range.text;
                      range.text = aTag + insText + eTag;
                      /* Anpassen der Cursorposition */
                      range = document.selection.createRange();
                      if (insText.length == 0) {
                        range.move('character', -eTag.length);
                      } else {
                        range.moveStart('character', aTag.length + insText.length + eTag.length);      
                      }
                      range.select();
                    }
                  
                  
                    /* für neuere auf Gecko basierende Browser */
                    else if(typeof input.selectionStart != 'undefined')
                    {
                      /* Einfügen des Formatierungscodes */
                      var start = input.selectionStart;
                      var end = input.selectionEnd;
                      var insText = input.value.substring(start, end);
                      input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
                      /* Anpassen der Cursorposition */
                      var pos;
                      if (insText.length == 0) {
                        pos = start + aTag.length;
                      } else {
                        pos = start + aTag.length + insText.length + eTag.length;
                      }
                      input.selectionStart = pos;
                      input.selectionEnd = pos;
                    }
                  
                  
                    /* für die übrigen Browser */
                    else
                    {
                      /* Abfrage der Einfügeposition */
                      var pos;
                      var re = new RegExp('^[0-9]{0,3}$');
                      while(!re.test(pos)) {
                        pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
                      }
                      if(pos > input.value.length) {
                        pos = input.value.length;
                      }
                      /* Einfügen des Formatierungscodes */
                      var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
                      input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
                    }
                  }

                  Kommentar


                  • #10
                    Original geschrieben von dreman
                    Code:
                    var input = document.forms['formular'].getElementByName(+ f +);
                    1. getElementByName gibt es nicht. getElementsByName heißt es.

                    2. das brauchst du hier gar nicht, wenn du die Syntax von http://de.selfhtml.org/javascript/ob...tm#allgemeines verwendest.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Cool. Danke für den Link:

                      Habe es jetzt so gemacht:
                      Code:
                      [...]
                      var input = document.forms["formular"].elements[""+f+""];
                      [...]

                      Kann man dass noch schöner schreiben?

                      Danke, dreman
                      Zuletzt geändert von dreman; 21.02.2006, 14:02.

                      Kommentar


                      • #12
                        Original geschrieben von dreman
                        Kann man dass noch schöner schreiben?
                        Natürlich - man setzt die Variable f direkt als Index ein, anstatt vollkommen unsinniger Weise noch einen Leerstring davor und dahinter zu hängen.
                        OffTopic:
                        Woher haben die Leute bloss immer diesen Unfug? Im PHP-Forum sieht man's andauernd, bei JS wie hier zuweilen auch ...
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Danke!
                          Hab eben beim testen was übersehen...
                          Habe den Leerstring jetzt rausgenommen...
                          und es geht!

                          Danke für deine Hilfe!

                          dreman

                          Code:
                          var input = document.forms["formular"].elements[f];

                          Kommentar

                          Lädt...
                          X