0

我开发了一些 javascript,它从数组生成动态表,然后允许用户编辑数据。这很完美。

现在我想在同一个 HTML 页面上使用此代码 3 次。目前它取决于两个变量:元数据,它描述了标题格式并且是只读的并且在所有三种情况下都是相同的,以及“数据”,它实际上保存了表的数据。

我认为与其为每个实例拥有三个代码副本,不如拥有一个将所有内容保持在内部并且仅具有“setData”和“getData”方法的对象会更好。

现有代码动态创建 onclick 事件 - 如何让这些事件引用对象函数,而不是全局函数?(即,目前有像'RemoveRow(index)'这样的函数,我假设它是'obj.RemoveRow(index)'。我很想在jquery中这样做,但是唉,我不知道要传入的rowindex那么,除非有人有解决方案.也许将它存储在DOM中的某个地方并以某种方式访问​​它以确定被点击的行?

是否可以传递对数组的引用?如果对象可以操作传入的数组,而不是制作一个副本来处理,然后调用者必须将其复制回自己的数组,那会好得多。

4

1 回答 1

0

所以这是非常原始的代码,只是多个选项之一,但也许你明白了:

创建一个处理单个表的对象

function TableControl () {
    // dom elements
    this.table = null;
    this.rows = null;
    // values
    this.id = null;
    // create new row
    this.insertRow = function() {
        // some logic
        this.table.append( 'new row goes here' );
    },
    // load table object and rows and stuff
    this._initiate = function() {
        //create object with all passed arguments
        var args = arguments[0] || {};

        // set internal values
        this.id = args.id;

        // get dom elements
        this.table = $('#' + this.id);
        this.rows = this.table.find('tr');
    },
    this._initiate( arguments[0] );
}

id使用每个表的创建该对象的实例

var table_1 = new TableConrol({ id: 'table_1' });
var table_2 = new TableConrol({ id: 'table_2' });
var table_3 = new TableConrol({ id: 'table_3' });

所以每个表只处理它自己的“范围”内的东西,比如添加新行:

table_1.insertRow();
于 2013-02-08T12:21:16.897 回答