(Vanilla JS)触发使用已知索引值单击表格单元格

时间:2016-01-29 02:21:15

标签: javascript navigation keyboard click

我正在为表格制作键盘导航,并且在运行以下代码时出现此错误:

var newActiveCell = table.rows[activeRowIndex].cells[activeColumnIndex];
newActiveCell.click();

错误:

  

TypeError:undefined不是对象(评估' table.rows [activeRowIndex] .cells')

如果我做.focus(),它可以与activeCell = document.activeElement一起使用,但我想知道是否有更好的方法来编码整个概念。

我还没有包含变量声明和处理键盘输入的功能以节省帖子中的空间,但实际上我尝试做的是触发单击我拥有的单元格指数值。

1 个答案:

答案 0 :(得分:0)

这为我修复了未定义的错误,我之前定义的行索引和列索引以及每当有按键时我都会根据需要增加它们。

CREATE PROCEDURE dbo.CalculateXPathExpression
(
     @data XML
    ,@XPathContextNode VARCHAR(MAX)
    ,@XPathCalculation VARCHAR(MAX)
)
AS
BEGIN
    DECLARE @Return INT;
    DECLARE @CalcSingleton VARCHAR(MAX)='(' + REPLACE(REPLACE(REPLACE(REPLACE(@XPathCalculation,' + ',')[1] + ('),' - ',')[1] + ('),' * ',')[1] + ('),' / ',')[1] + (') + ')[1]';
    DECLARE @Cmd NVARCHAR(MAX)=
    'SELECT @Return = Context.Node.value(''' + @CalcSingleton + ''',''int'')
    FROM @data.nodes(''' +  @XPathContextNode + ''') AS Context(Node);';

    EXEC sp_executesql @Cmd, N'@data XML, @Return INT OUTPUT',@data=@data, @Return=@Return OUTPUT;

    SELECT @Return;

    RETURN;
END
GO

DECLARE @data XML=
'<Object>
  <Parameters>
    <Parameter Name="a">2</Parameter>
    <Parameter Name="b">5</Parameter>
    <Parameter Name="c"/>
  </Parameters>
</Object>';

DECLARE @XPathContextNode VARCHAR(MAX)='/Object/Parameters/Parameter[@Name="c"]';
DECLARE @XPathCalculation VARCHAR(MAX)='../Parameter[@Name="a"]/text() + ../Parameter[@Name="b"]/text()';

EXEC dbo.CalculateXPathExpression @data, @XPathContextNode, @XPathCalculation;
GO

DROP PROCEDURE dbo.CalculateXPathExpression;
GO