使用handsontable获取单元格的值 - 错误:方法不是函数

时间:2015-08-11 07:36:49

标签: javascript handsontable

我想在我的ajax回调函数中获取我的handsontable网格的一个单元格的值。所以我可以获取我的网格,因为当我执行alert(hot);时,它只会告诉我[Object][Object]而不是未定义的'。但现在,我试图获得一个值并选择一个这样的单元格:

alert(hotTraitement.getDataAtCell(1,1));

Firebug告诉我:

  

hotTraitement.getDataAtCell不是函数

我做错了什么?

编辑:

我在窗口中声明我的动手。像这样:

$(window).load(function(){
            var data = [];


            var container = document.getElementById('tab_traitement');
            var hotTraitement = new Handsontable(container, {
                data: data_traitement,
                stretchH: 'all',
                minSpareRows: 1,
                observeChanges : true,
                rowHeaders: false,
                colHeaders: false,
                contextMenu: true,
                ...

            });
});

我将hotTraitement传递给参数如下:

 function insertTraitementCallback(responseObject,ioArgs,hotTraitement)

它似乎有效,因为我得到[对象对象]而没有"未定义"。

如果我错了,那么我应该如何在回调中提供hotTraitement?

编辑2:

在我的功能中,我现在尝试显示一个单元格的内容,看看我是否可以获取hotTraitement

function insertTraitementCallback(responseObject,ioArgs,hotTraitement)
{
    alert(hotTraitement.getDataAtCell(1,1));
}

Firebug告诉我" hotTraitement.getDataAtCell不是一个功能"。

编辑3:

function insertTraitementCallback(responseObject,ioArgs)
            {
                var idTableau ='tab_traitement';
                var table = 'traitement';
                var indexCell = 1;
                var jsonobject = eval(responseObject);
                console.log(hotTraitement.getDataAtCell(1,1));
                callback(jsonobject,data_traitement,idTableau,table, indexCell,'insert');               
            }
          var data = [];
</script>

<script type="text/javascript">
    $(document).ready(function()
    {
        $(window).load(function(){
            container = document.getElementById('tab_traitement');
            hotTraitement = new Handsontable(container, {
                data: data_traitement,
                stretchH: 'all',
                minSpareRows: 1,
                observeChanges : true,
                rowHeaders: false,
                colHeaders: false,
                contextMenu: true,
                ...
            });

        var table = 'traitement';


        $('#submit_button_traitement').click(function()
        {

            var id_essai = $('.session').text();
            arrayDataIDTraitement.length = 0;
            arrayDataCodeTraitement.length = 0;
            var idTable='id_traitement';

            $.post("ajaxUpdate.php",{arr:data_traitement,id_essai,table,idTable},insertTraitementCallback,'json');

            for(var i =1; i<data_traitement.length-1 ; i++) //Création du tableau pour les listes déroulantes
            {                   
                arrayDataIDTraitement.push(data_traitement[i][1]);
                arrayDataCodeTraitement.push(data_traitement[i][0]);
            }
        });
    });

1 个答案:

答案 0 :(得分:0)

您有一个范围问题。 hotTraitement将不会在回调中提供。您需要将hotTraitement传递给ajax设置选项,然后在回调中使用该变量。执行回调的上下文不同。