CakePHP - 从选项卡内部访问表

时间:2017-09-06 20:54:57

标签: ajax forms cakephp tabs html-table

我的页面有4个标签,每个标签内都有一个表格,我希望能够在某个标签内绘制表格的行。 现在我的代码绘制了所有表的行,而不仅仅是一个表。 我尝试过同一行代码的变体,但无法找到正确的代码来访问一个表。

在每个标签中都有一个具有不同ID的表,我不知道如何根据我的需要分别访问每个表。我的代码的最后一部分有一个条件,并且在每种情况下,行都是不同的。它们应该是相同的,但我改变它们以试图访问一个表,但我找不到方法。

也许您知道该行的正确代码。

谢谢。

我的代码页.ctp:

<div id="tab-1">
    <table id="tablesc">
    ...//samefor all
    </div>

<div id="tab-2">
    <table id="tablesd">
    ...//samefor all
    </div>
<div id="tab-3">
<table id="tablespr">
...//samefor all
</div>
<div id="tabs-4">
<table id="tablespr">
    <tr>
        <th width="5%">Codigo</th>
        <th colspan="2">Criterio</th>
    </tr>
    <?php echo $this->Form->create($file); ?>
    <?php $j=1; ?>
    <?php $indice = 1; ?>
    <?php foreach($xmlrecibidoSPR->entryresult as $entry):?>
    <tr>
        <td width="5%"><?php echo $entry->codigo; ?></td>
        <?php $etapa = '14';?>
        <td colspan="2"><?php echo $this->Form->input('criteriosSPR' . $j, array('options' => $opcionescriterios, 'label' => "", 'onchange' => 'cambio2(' . $indice . ', ' . $entry->resultnumber . ', ' . $etapa . ', ' . '\'' . $carpeta . '\'' . ', \'tablaspr\')')); ?></td>            
        </tr>       
    <?php ++$j; ?>
        <?php ++$indice; ?>
    <?php endforeach;?>
</table>
</div>

我的代码custom.js:

function change(indicetabla, indicexml, etapa, carpeta, tabla){
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "../webroot/files/pjs15/results.xml", false);
    xhttp.send();
    var xmlDoc = xhttp.responseXML;/* xml */
    var documento = xmlDoc.childNodes[0];
    var sufijo = "";
    if(etapa == 11 || etapa == 21){
        sufijo = "scp";
       } else if(etapa == 12 || etapa == 22){
        sufijo = "sd";
       } else if(etapa == 13 || etapa == 23){ 
        sufijo = "ieee";
       } else if(etapa == 14 || etapa == 24) {
        sufijo = "spr";
       } else{
        sufijo = "";
       }
    var table = document.getElementById(tabla);
        var t = document.getElementById("criterios" + sufijo +indicetabla);
    var selectedText = t.options[t.selectedIndex].text;

    $.ajax({
        url:'../webroot/js/ajax.php',
        method:'get',
        data:{name:indicexml, criterio:selectedText, etapa:etapa, carpeta:carpeta},
        success:function(data)
        {
            particula = selectedText.substr(0,2);
            if(particula=='CI')/* indicexml */
            {
                $("table").find('tr:eq(' + indicetabla + ')').css('background-color', '#98ff98');//mint
            }
            else if(particula=='CE')
            {
                document.getElementById("table").find('tr:eq(' + indicetabla + ')').css('background-color', '#f6b8b8');//powder pink
            }
            else
            {
                $("table" + sufijo).find('tr:eq(' + indicetabla + ')').css('background-color', '#fcf8e3');
            }
        },
        error:function(data)
        {
            alert("error");
        }
    });

1 个答案:

答案 0 :(得分:1)

jQuery id selectors必须以#符号开头。

你正在连接&#34; table&#34;这里有每个唯一的后缀,但需要在选择器前面添加#

$("table" + sufijo).find('tr:eq(' + indicetabla + ')').css('background-color', '#fcf8e3');

应该是

$("#table" + sufijo).find('tr:eq(' + indicetabla + ')').css('background-color', '#fcf8e3');