Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在onclick上使用此参数_Javascript - Fatal编程技术网

Javascript 在onclick上使用此参数

Javascript 在onclick上使用此参数,javascript,Javascript,我用javascript生成了一些html代码,如下所示 cell.innerHTML = '<a href="#" class="sortheader" id="sortheader_'+i+'" '+ 'onclick="ts_resortTable(this, '+i+');return false;">' + txt+'<span class="sortarrow"></span></a>'; 还有这个

我用javascript生成了一些html代码,如下所示

cell.innerHTML = '<a href="#" class="sortheader" id="sortheader_'+i+'" '+ 
        'onclick="ts_resortTable(this, '+i+');return false;">' + 
        txt+'<span class="sortarrow"></span></a>';
还有这个

ts_resortTable(document.getElementById('sortheader_'+i), i);
但它不起作用

我试图调用的函数是:

function ts_resortTable(lnk,clid) {

    //save clid in cookies
    $.cookie("clid", clid);

    //fade to table
    $('#table8k6k_progress').before('<div id="loading" style="background: #fff; position: absolute; margin-top: -25px; padding: 3px 5px; font-weight: bold;">Loading...</div>');
    $('#table8k6k_progress').fadeTo('fast',0.5, function() {
        TIMERSTART = (new Date()).getTime();
        // get the span
        var span;
        for (var ci=0;ci<lnk.childNodes.length;ci++) {
            if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span') span = lnk.childNodes[ci];
        }
        var spantext = ts_getInnerText(span);
        var td = lnk.parentNode;
        var column = clid || td.cellIndex;
        var table = getParent(td,'TABLE');

        // Work out a type for the column
        if (table.rows.length <= 1) return;
        var itm = ts_getInnerText(table.rows[1].cells[column]);
        //itm = itm.substr(0,7);
        sortfn = ts_sort_caseinsensitive;
        if (itm.match(/^\d{1,2}[\/-]\d{1,2}[\/-]\d{2,4}\s\d\d\W\d\d$/)) sortfn = ts_sort_date;
        if (itm.match(/^\d\d[\/-]\d\d[\/-]\d\d\d\d$/)) sortfn = ts_sort_date;
        if (itm.match(/^\d\d[\/-]\d\d[\/-]\d\d$/)) sortfn = ts_sort_date;
        if (itm.match(/^[£$]/)) sortfn = ts_sort_currency;
        if (itm.match(/^[\d\.]+$/)) sortfn = ts_sort_numeric;
        SORT_COLUMN_INDEX = column;
        var firstRow = new Array();
        var newRows = new Array();
        for (i=0;i<table.rows[0].length;i++) { firstRow[i] = table.rows[0][i]; }
        for (j=1;j<table.rows.length;j++) { newRows[j-1] = table.rows[j]; }

        newRows.sort(sortfn);

        if (span.getAttribute("sortdir") == 'down') {
            ARROW = stIsIE ? '&nbsp<font face="webdings">6</font>' : '&nbsp;&#x25BE;';
            newRows.reverse();
            span.setAttribute('sortdir','up');
        } else {
            ARROW = stIsIE ? '&nbsp<font face="webdings">5</font>' : '&nbsp;&#x25B4;';
            span.setAttribute('sortdir','down');
        }

        // We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
        // don't do sortbottom rows
        for (i=0;i<newRows.length;i++) { if (!newRows[i].className || (newRows[i].className && (newRows[i].className.indexOf('sortbottom') == -1))) table.tBodies[0].appendChild(newRows[i]);}
        // do sortbottom rows only
        for (i=0;i<newRows.length;i++) { if (newRows[i].className && (newRows[i].className.indexOf('sortbottom') != -1)) table.tBodies[0].appendChild(newRows[i]);}

        // Delete any other arrows there may be showing
        var allspans = document.getElementsByTagName("span");
        for (var ci=0;ci<allspans.length;ci++) {
            if (allspans[ci].className == 'sortarrow') {
                if (getParent(allspans[ci],"table") == getParent(lnk,"table")) { // in the same table as us?
                    allspans[ci].innerHTML = '';
                }
            }
        }

        span.innerHTML = ARROW;

        //fadeTo
        $('#table8k6k_progress').fadeTo('fast', 1);

        //remove div loading
        $('#loading').remove();
    });


    //alert("Time taken: " + ( (new Date()).getTime() - TIMERSTART ) + "ms");

}
函数表(lnk,clid){
//在cookies中保存clid
$.cookie(“clid”,clid);
//退席
$('表8K6K_进度')。在('加载…')之前;
$('table8k6k_progress').fadeTo('fast',0.5,function(){
TIMERSTART=(新日期()).getTime();
//获得跨度
var跨度;

对于(var ci=0;ci基于您键入的内容

$('sortheader_' + i)
因为这不是MooTools,所以需要为选择器执行此操作

$('#sortheader_' + i)
您需要在jQuery中使用CSS选择器。

通过调用

onclick="ts_resortTable(this, '+i+');

ts_restortable函数的第一个参数是
标记itelf

要调用函数并显式控制函数中的
内容,请使用函数的方法

  • 上面将
    this
    设置为函数中的document.getElementById('sortheader_uu'+i)
  • 该函数还将接收单个参数,
    i
document.getElementById('sortheader_u'+i)


当我在document ready事件上启动函数时,尚未生成id链接。因此解决方案是延迟函数的启动;)

document.getElementById('sortheader_'+i)
应该可以工作;您能告诉我们您正在尝试什么吗?谢谢Matt,我尝试了,可能我错过了一些东西,我会再试一次;)你的意思是,你想
这个
指向ts#u RestorTable内的“#sort_headeri”?是的,这也可能是一个解决方案Juan;)@Matt好的,你的解决方案是正确的,但这真的很棘手,因为页面包含大量数据,并且在我启动document ready事件的函数时,还没有生成id链接。所以不是吗他的解决方案是推迟函数的启动;)
这将是一个jQuery对象,而不是
HTMLElement
@Matt这段代码以前没有包含任何jQuery,所以我不这么认为;)@Jerome:对不起,我的意思是Michaels代码将把
作为一个jQuery对象,而不是已经存在的代码。
onclick="ts_resortTable(this, '+i+');
ts_resortTable.call(document.getElementById('sortheader_'+i), i)