2017-05-04 3 views
0

Ma question est, comment puis-je déplacer une image d'un élément td à l'autre par son ID? Par exemple quand j'ai une table avec 3 rangées et chaque rangée a 3 éléments de td. J'ai besoin de savoir ceci, parce que je veux obtenir l'id de l'élément td dans lequel l'image est. Après cela, je veux enlever l'image de là et l'insérer dans le nouvel élément td. Par exemple à partir du "numéro ", avec une fonction movePicture ("left") l'image doit être déplacée de 1 td vers la gauche. Les options doivent être à gauche, droite, haut, bas ou 0,1,2,3. Merci. Comment obtenir une image par son ID d'une table et le déplacer d'un td à l'autre?

td{ 
 
    width: 30px; 
 
    height: 30px; 
 
    background-color: lightblue; 
 
    text-align: center; 
 
}
<table><tbody> 
 
<tr> 
 
    <td id="number00">00</td> 
 
    <td id="number10"> 
 
     <img src="pic.png" id="picture">10 
 
    </td> 
 
    <td id="number20">20</td> 
 
</tr> 
 
<tr> 
 
    <td id="number01">01</td> 
 
    <td id="number11">11</td> 
 
    <td id="number21">21</td> 
 
</tr> 
 
<tr> 
 
    <td id="number02">02</td> 
 
    <td id="number12">12</td> 
 
    <td id="number22">22</td> 
 
</tr> 
 
</tbody></table>

+0

Vous déplacez l'image dans respons e à un clic? Comment savoir où l'image doit être déplacée? – James

+0

il est écrit dans l'exemple, de "number10" à "number11" ... non pas un clic, par exemple avec une fonction movePicture (** 11 **); la fonction devrait obtenir l'image par son identifiant et l'enlever de là ... dans ce cas ce serait "number10" et ensuite il devrait être déplacé vers l'élément td avec l'identifiant "number ** 11 **". – bady

+0

Donc la fonction a juste besoin de déplacer une image à la ligne directement sous elle dans la même colonne? – Kramb

Répondre

3

L'image est un identifiant unique afin de trouver l'identifiant du TD qui contient l'image est pas nécessaire. Pour déplacer l'image de nulle part où Number11:

document.getElementById('number11').appendChild(document.getElementById('picture')); 

OK maintenant il semble que vous avez besoin d'une fonction:

function movePicture(direction) { 
    // get the id of the td that contains the picture 
    var currentTD = document.getElementById('picture').parentNode.id; 
    // extract the x and y values from the id 
    var x = Number(currentTD.charAt(6)); 
    var y = Number(currentTD.charAt(7)); 

    // alter the x or y value depending on what kind of move was requested 
    switch (direction) { 
    case "up": 
     if (y > 0) y--; 
     break; 
    case "down": 
     if (y < 2) y++; 
     break; 
    case "left": 
     if (x > 0) x--; 
     break; 
    case "right": 
     if (x < 2) x++; 
     break; 
    } 
    // move the picture to its new home 
    document.getElementById('number' + x + y).appendChild(document.getElementById('picture')); 
} 

exemples:

movePicture('down'); 
movePicture('left'); 
movePicture('up'); 
movePicture('right'); 

rapide exemple setTimeout:

var moves = ['down','left','up','right']; // repeat when done 
var index = 0; 
function doTimedMove() { 
    if (index == moves.length) index = 0; 
    movePicture(moves[index]); 
    index++; 
    setTimeout(doTimedMove, 1000); 
} 
+0

Je sais, mais par exemple quand je veux que l'image se déplace de 1 td vers la droite, alors j'ai besoin d'obtenir l'id du td qui est "number10" et ensuite changer la sous-chaîne de "number" + colVar + "" + rowVar. Et puis incrémenter le colVar. Mais par conséquent, j'ai besoin de savoir ce que le numéro était avant ... – bady

+0

C'est pourquoi j'ai demandé comment vous savez où va la photo. La destination est-elle basée sur l'emplacement actuel de l'image? – James

+0

ok ma faute, alors oui c'est. Je veux que l'image puisse se déplacer de la position actuelle 1 td à gauche, droite, haut et bas. – bady