2015-05-13 15 views
6

Mam poniżej kodu:JavaScript nie mógł ustawić ostrość na pierwszym elemencie li wewnątrz ul

<ul id='someId'> 
<li class='someClass'> 
</li> 
</ul> 

Chcę ustawić ostrość na pierwszym elemencie li wewnątrz ul podstawie jakiegoś warunku.

Moja pierwsza próba jest tak:

var ul = document.getElementById('someId');   
var child = ul.childNodes[0]; 
child.focus(); 

Moja druga próba jest tak:

var y = document.getElementsByClassName('someClass'); 
var aNode = y[0]; 
aNode.focus(); 

Ale żadna z powyższych działa

jakieś pomysły?

+0

Czy możesz pokazać kod HTML? – manzapanza

+0

Zaktualizowano kod – Sushil

+0

Metoda HTMLElement.focus() ustawia fokus na określonym elemencie, jeśli można go ustawić. Czy to jest możliwe do ustawienia? Skąd wiesz, że się nie skupiła? – Samir

Odpowiedz

16

Problem polega na tym, że nie można ustawić ogniskowania elementu bez wejścia bez ustawienia tabIndex.

<li tabindex="-1">...</li> 

Spróbuj skrzypce: jsfiddle

+0

Dzięki .. ale to nie działa – Sushil

+0

Czy umieścisz skrzypce? –

+0

Wprowadzono pewne zmiany. To działa teraz. Dzięki – Sushil

0

za 'li' nie może mieć ostrość, jednak za 'wejście' można, więc piszesz sobie następujący scenariusz:

function installLI(obj){ 
     var ul = document.createElement('ul'); 
     obj.appendChild(ul); 
     var li = document.createElement('li'); 
     var txt = document.createElement('input'); 
     li.appendChild(txt); 
     ul.appendChild(li); 
     txt.focus(); 
     li.removeChild(txt); 
} 

gdzie ' obj "jest obiektem (jak edytowalny element div), do którego dodajesz swoją listę.

Powiązane problemy