2010-02-03 5 views
3

J'ai une table dans une div avec une hauteur définie, lorsque la table est plus grande que la div la barre de défilement apparaît. Le problème est que si la barre de défilement de la div est en haut, laissant l'autre rangée en bas cachée, et l'utilisateur appuie sur le bouton pour ajouter une nouvelle ligne, cette ligne est ajoutée au bas de la table, donc vous Je ne peux pas le voir.Définir le focus à la fin de la table à l'intérieur de div lors de l'ajout d'une nouvelle ligne

Y at-il un javascript, un vbscript ou un css pour définir le focus sur la ligne qui a été créée afin qu'il soit visible lors de l'ajout?

Ceci est le code où la fonction pour ajouter une nouvelle ligne serait appelée.

strRow = strRow + "<div> 
     <input ID='AddRowTableNew_" + cstr(newrow.id) + "' type='button' 
     value='Add New Row' 
     onclick='vbscript:AddNewRow 0," + cstr(newRow.id)+ "'/> 
    </div>" 

Toute aide serait appréciée. PD: J'aurais besoin que ce soit sur VBScript ou JavaScript, pas de JQuery s'il vous plait.

Merci.

+0

jQuery est JavaScript lui-même. – rahul

Répondre

5

Essayez Element.scrollIntoView();. Cela fonctionne dans Firefox, IE6 +, Opera et Google Chrome/Safari.

Vous pouvez également fournir une valeur booléenne à la fonction qui spécifiera où pour faire défiler l'élément:

// Align the element with the top of the parent 
Element.scrollIntoView(); 
Element.scrollIntoView(true); 

// Align the element with the bottom of the parent 
Element.scrollIntoView(false); 

EDIT: MDC documentation pour scrollIntoView un exemple

Pour faire défiler vers le bas, vous pourriez aussi vient de mettre scrollTop propriété de l'élément égal à la scrollHeight propriété:

Element.scrollTop = Element.scrollHeight; 
+0

Salut Andy, ce serait assez pratique pour ce dont j'ai besoin, mais j'ai un petit problème. J'ai ceci (onclick = "vbscript: AddNewRow()". Savez-vous comment je peux ajouter cette déclaration dans l'événement onclick? Ex. (Onclick = "vbscript: AddNewRow(); Element.scrollIntoView (false);" – Amra

+1

si le AddNewRow renverrait l'élément qui a été créé (dans le DOM) alors vous pourriez faire 'vbscript: (AddNewRow()). scrollIntoView (faux);' –

+1

@Cesar Lopez: Il serait plus facile d'ajouter le code à la fin de votre fonction 'AddNewRow' Remplacez' Element' par une référence à votre ligne nouvellement créée, par exemple 'newRow.scrollIntoView (false)'. Vous pouvez également renvoyer une référence à la ligne nouvellement créée avec votre code ceci: 'onclick =" vbscript: (AddNewRow()). scrollIntoView (faux) "' –

2

Try this ...

var div = document.getElementById('the_div'); 
div.scrollTop = div.scrollHeight; 

Hope it helps.

+0

Cela échouerait lorsque la zone de défilement est supérieure à 2x la hauteur de décalage. Si quelque chose devrait être 'div.scrollTop = div.scrollHeight' '. –

+0

Mon mauvais. Merci Andy E. – aefxx

Questions connexes