2016-09-21 2 views
0

필자는 자바 스크립트 코드가 포함 된 노트북 셀을 가지고 있으며 코드에서이 특정 셀을 선택하고 싶습니다. 불행히도 get_selected_cell의 동작은 셀을 제 위치에서 실행하는지 또는 아래의 셀을 실행하고 선택하는지에 따라 다릅니다.Jupyter에서 JavaScript로 현재 셀을 선택하는 방법은 무엇입니까?

예 :

%%javascript 
var cell = Jupyter.notebook.get_selected_cell(); 
console.log(Jupyter.notebook.find_cell_index(cell)); 

이 셀을 실행 콘솔 출력은 I Ctrl+Enter 또는 Shift+Enter으로 실행 여부 다를 것이다. 한 경우 자바 스크립트 코드가 포함 된 셀의 인덱스를 다른 셀의 인덱스에 기록합니다.

내가 원하는 셀을 선택하는 방법이 있습니까?

+1

는'selected_cell'는 UI에서 선택된 하나를 의미한다 : 당신은 그 요소에 해당하는 셀을 받고 다음 부모 .cell 요소를 식별에 의해 셀을 찾을 수 있습니다. 자바 스크립트 안에는 셀의 출력 영역에 'this'가 출력 영역으로 추가됩니다. 나는 현재 그것이 속한 세포로 되돌아가는 길을 찾을 수 없다. –

+0

@ThomasK 감사합니다. 그렇다면 가능하지 않다고 생각합니다. – IanS

+1

아마도 JS 허커리지가 복잡 할 수는 있겠지만 어떻게 될지는 의심 스럽습니다. JS 출력에서 ​​셀을 공식적으로 참조하려면 [notebook repo] (https://github.com/jupyter/notebook)에서 기능 요청을 자유롭게 열어보십시오. –

답변

2

귀하의 자바 스크립트는 자바를 사용하는 OutputArea에는 핸들을 가지고 있지만 셀에있는 핸들은 하나도 가지고 있지 않습니다. 일반적으로 출력 영역은 셀이나 노트없이 사용할 수 있습니다.

%%javascript 
var output_area = this; 
// find my cell element 
var cell_element = output_area.element.parents('.cell'); 
// which cell is it? 
var cell_idx = Jupyter.notebook.get_cell_elements().index(cell_element); 
// get the cell object 
var cell = Jupyter.notebook.get_cell(cell_idx); 
+0

고마워, 나는'this' 대신에'element'를 시도했다. 이것은 매력처럼 작동합니다 ... – IanS

관련 문제