如何在Jupyter中使用JavaScript选择当前单元格?

时间:2016-09-21 10:20:54

标签: javascript ipython jupyter jupyter-notebook

我有一个包含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代码的单元格的索引,在另一种情况下记录下面单元格的索引。

有没有办法选择我想要的细胞?

2 个答案:

答案 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。