Griever: Zellen in Zeile "Markieren"

Hi there.

ich möchte jetzt mal bitte fragen, ob jemand vielleicht eine Site kennt, die das anbietet oder sogar jemand, der mir so ein Script geben kann ...

Ich habe eine Tabelle

|--|--|--|--|--|--|--|--|--|--|--|--|

x
-- -- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- -- --

x = Cursor

Und jede Zelle ist anklickbar (Javascript-Befehl)

Nun möchte ich aber auch, dass via einem Drag&Drop-ähnlichem Befehl die Möglichkeit besteht, eine reihe von Zellen, welche Nebeneinander liegen zu "markieren".

Etwa so:

|--|--|--|--|--|--|--|--|--|--|--|--|

# # # # # x
-- -- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- -- --

x = Cursor

= via Javascript / Css markierte Zelle ...

Ich möchte dann beim Loslassen der Maustaste eine Funktion aufrufen, welche analysieren kann,welche Zellen markiert sind ...

z. B. 2a,2b,2c usw.

Freue mich über jede Hilfe.

Da dieses System, welches ich erstellen "soll" nur auf IE arbeiten wird, besteht also kein Grund, wegen der Javascript-Verfügbarkeit zu diskutieren. Es läuft auf einem Intranet als internes Tool ... Und ich soll es mit Javascript und PHP aufrüsten (Also dynamischer gestalten) ...

MFG
Griever

  1. Hallo Griever,

    nur eine Idee:

    Mit onmousedown startest du die Prozedur,
    mit onmouseout markierst du das entsprechende Feld und merkst es dir,
    und mit onmouseup bist du fertig.

    Gruß, Jürgen

    1. Ja.

      Das ist eine Idee ...

      Doch wie mache ich das, dass der User nur nach rechts hin markieren kann. Und nicht nach links ... oder sonstwo hin?

      Und das Rückgängig, falls man jetzt eine Zelle zu viel zieht, für die Zellen, Soll ich das mit OnmouseOver machen?

      Also:

      Onmousedown = start(this)
      onmouseout = focus_this(this)
      onmouseover = defocus_this(this)
      onmouseup = stop()

      oder was?

      Muss ich nur noch die Funktionen setzen, hm ...

      MFG
      Griever

      1. Ja.

        Das ist eine Idee ...

        Doch wie mache ich das, dass der User nur nach rechts hin markieren kann. Und nicht nach links ... oder sonstwo hin?

        Und das Rückgängig, falls man jetzt eine Zelle zu viel zieht, für die Zellen, Soll ich das mit OnmouseOver machen?

        Also:

        Onmousedown = start(this)
        onmouseout = focus_this(this)
        onmouseover = defocus_this(this)
        onmouseup = stop()

        oder was?

        Muss ich nur noch die Funktionen setzen, hm ...

        MFG
        Griever

        Du könntest IDs oder Namen vergeben, die auf Zeile und Spalte hinweisen. Dann kannst du ja abfragen, ob zuvor die Zelle links von der aktuellen in der selben Spalte markiert wurde.

  2. x = Cursor

    = via Javascript / Css markierte Zelle ...

    Ich möchte dann beim Loslassen der Maustaste eine Funktion aufrufen, welche analysieren kann,welche Zellen markiert sind ...

    Dazu musst du schon während des selektierens dir die Elemente holen. Laut msdn gibt es den onselect Handler, ich hab hier aber nur den IE 4, da funktioniert es nicht. Aber ich hab das Skript mit onmousemove getestet und dann ging's, wobei aber mehr Felder als markiert angezeigt wurden, weil der over Event vorher gefeuert wird.

      
    var list;  
    document.onmousedown = function(e)  
    {  
        if(!e) e = window.event;  
        document.onselect = getElement;  
        list = [];  
    }  
    document.onmouseup = function(e)  
    {  
        if(!e) e = window.event;  
        document.onselect = null;  
        for(var i = 0; i < list.length; i++)  
        {  
        list[i].innerHTML = 'markiert ' + i;  
        }  
    }  
      
    function getElement(e)  
    {  
        if(!e) e = window.event;  
        var o = e.target ? e.target : e.srcElement ? e.srcElement : null;  
        if(o.tagName.toLowerCase() == 'td' && !o.markiert)  
        {  
             list.push(o);  
             o.markiert = true;  
        }  
    }  
    
    

    Struppi.

    --
    Javascript ist toll (Perl auch!)
  3. hi,

    Nun möchte ich aber auch, dass via einem Drag&Drop-ähnlichem Befehl die Möglichkeit besteht, eine reihe von Zellen, welche Nebeneinander liegen zu "markieren".

    Es dürfte wesentlich einfacher werden, wenn man sich darauf einigen könnte, dass zum "markieren" mehrerer Zellen einmal in die "Start-Zelle", und dann noch einmal in die "End-Zelle" geklickt würde.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }