Toon posts:

[js] focus() of createRange() ?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb het volgende probleem waar ik helemaal gaar van wordt. Ik heb een plaatje geselecteerd in een iframe. Deze kan ik draggen en droppen in een andere cel van een tabel.

Nu wil ik de width van de <TD> waar ik hem ingooi weten. Probleem is dat wanneer ik hem loslaat, niet de tabel geselecteerd is, maar de afbeelding. Ik weet wel de id van de afbeelding trouwens.


Kan ik dan iets doen van getElementById(id_van_afbeelding) en dan parentElement() totdat ik de <TD> te pakken heb?

Ik heb het volgende geprobeerd zonder succes:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
function slepenAfbeelding(element)
{
                var id = element.id;
    alert(id);           
    elem = window.iframe.document.body.getElementById('id');
    while (elem.tagName.toUpperCase() != "TD")
               {
                         elem = elem.parentElement
                         if (elem == null)
                         break
             alert(elem.tagname.toUpperCase);
                }
}

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Cyberhenk:
Ik heb het volgende geprobeerd zonder succes:
JavaScript:
1
alert(elem.tagname.toUpperCase);

elem.tagName.toUpperCase()

Scheelt weer ;)

krijg je verder nog foutmeldingen, ofzo :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
JavaScript:
6
while (elem.tagName.toUpperCase() != "TD")

als er geen TD als parentelement bestaat, zul je op deze manier een foutmelding krijgen..
daarom kun je dat beter verberen in zoiets..
JavaScript:
6
while ((elem.tagName.toUpperCase() != "TD") || (elem.tagName.toUpperCase() != "BODY"))

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

euh, doe dan wel even de || in && veranderen :P

Maar je hebt ook over de
code:
1
if (elem == null) break
heen gelezen.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Ik heb nu:
function slepenAfbeelding(element)
{
var id = element.id;
alert(id);
elem = window.iframe.document.body.getElementById('id');
while (elem.tagName.toUpperCase() != "TD")
{
elem = elem.parentElement
if (elem == null)
break
alert(elem.tagName.toUpperCase());
}
}

Dit werkt niet. Hij alert helemaal niks en ik krijg ook geen foutmelding. Probleem is dat hij dat hij de focus op die afbeelding houdt.

Eigenlijk zou ik de controlRange moeten verleggen of manipuleren. Heeft iemand hier ervaring mee? Ik heb heel MSDN al gespeld, maar geen duidelijke oplossing gevonden. Bedankt voor alle tips in ieder geval.

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Wat moet window.iframe.document voorstellen :? ?

edit:

Vanuit een element de onderliggende TD vinden:

JavaScript:
1
2
3
4
5
6
7
8
9
<script language="JavaScript" type="text/javascript">
function slepenAfbeelding(element)
{
    while ((element.tagName.toUpperCase() != 'TD') && (element.tagName.toUpperCase() != 'BODY'))
        element = element.parentElement;

                alert(element.style.pixelWidth); // De breedte alerten van de td..
}
</script>

HTML:
1
2
3
4
5
6
7
<table>
  <tr>
    <td>
      [img]"bla.gif"[/img]
    </td>
  </tr>
</table>

[ Voor 155% gewijzigd door r0bert op 20-12-2002 11:35 ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

r0bert:
Vanuit een element de onderliggende TD vinden:

JavaScript:
1
alert(element.style.pixelWidth); // De breedte alerten van de td..

Of van de body dus ;) als er geen td boven zit :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Dat gaat denk ik niet werken. Ik heb hetzelfde probleem ongeveer.

[ Voor 121% gewijzigd door Verwijderd op 06-01-2003 13:48 ]


Verwijderd

Topicstarter
Robert, jouw idee werkt helaas niet, zoals Tommienbp al vermoedde. Ik zoek dus de breedte van de cel waar ik hem drop en niet de breedte van de cel waar het plaatje vandaan komt.

drm: zover was ik ook al. Het gaat me meer om de actie van het slepen en loslaten en dan op het moment van loslaten de breedte van de cel bepalen waarin ik hem loslaat.

Ik gebruik nu onDragEnd en volgens mij is dat niet helemaal ok. onDrop laat overigens helemaal niks zien. Iemand hier ervaring mee?
Pagina: 1