Zellen in Zeile "Markieren"
Griever
- javascript
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
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
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
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
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.
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.
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