我有一个包含JavaScript代码的笔记本单元格,我希望代码选择这个特定的单元格。不幸的是,get_selected_cell
的行为取决于我是否执行了单元格,或者执行并选择下面的单元格。
示例:
%%javascript
var cell = Jupyter.notebook.get_selected_cell();
console.log(Jupyter.notebook.find_cell_index(cell));
执行此单元格时,无论我使用Ctrl+Enter
还是Shift+Enter
执行,控制台输出都会有所不同。在一种情况下,它记录包含JavaScript代码的单元格的索引,在另一种情况下记录下面单元格的索引。
有没有办法选择我想要的细胞?
答案 0 :(得分:3)
您的Javascript将在OutputArea上应用Javascript,但不是一直到单元格(通常,输出区域可以在没有单元格或笔记本的情况下使用)。您可以通过标识父.cell
元素找到该单元格,然后获取与该元素对应的单元格:
%%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);
答案 1 :(得分:2)
如果使用display(HTML("javascript code"))
执行javascript,this
将返回Window对象。
因此,您应该使用display(Javascript("javascript code"))
来获取当前的单元格' output_area。