1

私は再びスコープの問題を抱えています(私は推測します)。ページのコンテンツをプレースホルダー<DIV>(

読み込みページのサンプル コードの下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>testtesttest</title>
</head>

<script type="text/javascript" src="/AJAX/jquery-1.6.4.min.js"></script>
<script type='text/javascript' src='/util.js'></script>

<body>
<div class='contentcontainer'>
<hr>

<div class='contentitem' id='restart' style="margin-top: 100px; margin-left: 100px; margin-bottom: 100px; display:block;">
    <table>
        <tr>
            <td><img src='/images/warn__xl.gif'></td>
            <td><p style="font-size: 1.2em; font-weight: bold; color:#02A3C1;">Loading: please wait...</p></td>
        </tr>
    </table>
</div>

<div class='contentitem' id='ready' style="margin-top: 100px; margin-left: 100px; margin-bottom: 100px; display:none;">
         <div id="content">
         </div>
</FORM>
</div>


</div>

  <script type='text/javascript'>
        var content = $("#content");
        //var content = $("#ready");

    //hide loading bar
    function hideLoading(){
        loading.fadeTo(1000, 0);
    };

    $(document).ready(function(){   
       content.load('/AJAX/test/cfg_3.html div .contentitem', function(content) {
       //$(this).find('table:not(:first-child)').css("font-style", "italic"); //just need to replace the css by remove() to remove what is italic.
       $(this).find('table:eq(2)').css("font-style", "italic"); //just need to replace the css by remove() to remove what is italic.

        /*$(this).find('table:contains("Content Based"):first-child').each(function(i){
                   //.css("display", "none");
                    //  tabelle[i] = $(this).attr("onChange");
              //$(this).attr("id",i)
              alert(i);
          });*/

        $(this).find('tbody').each(function(){
              //$("tr").children("td").find('table:contains("Content Based"):first-child').each(function() {$(this).css("font-style", "normal");});
              $("tr").children("td").find('table:contains("Content Based")').each(function() {$(this).css("background-color", "yellow");});
              //$("tr").children("td").find('table:contains("Content Based"):first-child').each(function() {$(this).remove();}); 
          });
        document.getElementById("restart").style.display = "none";
        document.getElementById("ready").style.display = "block";
        //alert('Load was performed.');
    });
    });

  //intelligent version of submitform: will only refresh what was needed:
   (function() {  
   // 
   var proxied = submitForm;
   submitForm = function(theForm, actionNo, flags, primkey, confirmMsg, anchor, eval_code, customP) {
   //potential issue with the switch language... I think actionNo = 0 means reload.
   //alert('gotcha');
   // Function submit a form
        $.ajax({
            //type: theForm.attr('method'),
            //type: get,
            //url: theForm.attr('action'),
            //content.load('/AJAX/test/cfg_3.html div .contentitem', function(content) {
            url: "/AJAX/test/cfg_3.html",
            //data: theForm.serialize(),
            success: function (data) {
                alert('ok');
                var dataHTML = $(data).html().filter("div .contentitem");
                $(dataHTML).find('table:eq(2)').css("font-style", "bold"); //just need to replace the css by remove() to remove what is italic.
                content.html(dataHTML); 
            }
        });

  }
   return false;
   })();

</script>

</body> 
</html> 

読み込まれたページの抜粋:

<HTML>
<HEADER>
    <script type='text/javascript' src='/util.js'></script>
</HEADER>
<BODY>
    <div class='contentcontainer'>
        <hr>
        <div class='contentitem'>
            <table cellspacing='0' cellpadding='0'>
                <tr>
                    <td class='icon' valign='top' width='100px'><img src='/images/webf__xl.gif' alt='Parental Control'></td>
                    <td class='data' valign='top'>
                        <table cellspacing='0' cellpadding='0'>
                            <tr>
                                <td align='left'><span class='itemtitle'>Parental Control</span></td>
                                <td align='right'></td>
                            </tr>
                            <tr>
                                <td colspan='2'>
                                    <p>This page summarizes the configuration of your Thomson Gateway regarding web site filtering. </p>
                                    <form name='SiteFilterCfg' action='/cgi/b/sfltr/cfg/' method='post'>
                                        <br>
                                        <table cellspacing='0' cellpadding='0' width='100%'>
                                            <tr>
                                                <td width='40' valign='top'><img src='/images/bull__md.gif' alt=''></td>
                                                <td valign='top'>
                                                    <span class='blocktitle'>Title</span><br>
                                                    <table width='100%' class='datatable' cellspacing='0' cellpadding='0'>
                                                        <tr>
                                                            <td></td>
                                                            <td width='30px'></td>
                                                            <td width='220px'></td>
                                                            <td width='50px'></td>
                                                        </tr>
                                                        <tr>
                                                            <td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td>
                                                        </tr>
                                                        <tr>
                                                            <td width='170'>Use Address Based Filter:</td>
                                                            <td colspan='3'><input type='checkbox' name='30' value='1'   ></td>
                                                        </tr>
                                                        <tr>
                                                            <td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td>
                                                        </tr>
                                                        <tr>
                                                            <td width='170'>Action:</td>
                                                            <td colspan='3'>
                                                                <select name='31' style='width: 270px'>
                                                                    <option value='0' >Block</option>
                                                                    <option value='1' selected>Allow</option>
                                                                </select>
                                                            </td>
                                                        </tr>
                                                        <tr>
                                                            <td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td>
                                                        </tr>
                                                        <tr>
                                                            <td colspan='4' align='right'>
                                                                <input type='button' name='25' value='Apply' onClick='submitForm(document.SiteFilterCfg,25,0,"","",0,"")' >
                                                                <input type='button' name='26' value='Cancel' onClick='submitForm(document.SiteFilterCfg,26,0,"","",0,"")' >
                                                            </td>
                                                        </tr>
                                                    </table>
                                                    <p>Some text. </p>
                                                    <table class='edittable' width='100%' cellspacing='0' cellpadding='0' border='0'>
                                                        <tr>
                                                            <td colspan='5' class='black'><img src='/images/spacer.gif' border='0' width='1' height='1' alt=''><br></td>
                                                        </tr>
                                                        <tr>
                                                            <td colspan='5'><img src='/images/spacer.gif' border='0' width='1' height='3' alt=''><br></td>
                                                        </tr>
                                                        <tr>
                                                            <th align='left'>Web Site</th>
                                                            <th align='left'>Action</th>
                                                            <th align='left'>Redirect</th>
                                                            <th colspan='2'></th>
                                                        </tr>
                                                        <tr>
                                                            <td colspan='5'><img src='/images/spacer.gif' border='0' width='1' height='3' alt=''><br></td>
                                                        </tr>
                                                        <tr>
                                                            <td colspan='5' class='black'><img src='/images/spacer.gif' border='0' width='1' height='1' alt=''><br></td>
                                                        </tr>
                                                        <tr>
                                                            <td class='evenrow' colspan='5'><img src='/images/spacer.gif' border='0' width='1' height='10' alt=''><br></td>
                                                        </tr>
                                                        <tr>
                                                            <td class='evenrow' colspan='5' align='center'><i>No filter rules defined.</i></td>
                                                        </tr>
                                                        <tr>
                                                            <td class='evenrow' colspan='5'><img src='/images/spacer.gif' border='0' width='1' height='10' alt=''><br></td>
                                                        </tr>
                                                        <tr>
                                                            <td colspan='5' class='black'><img src='/images/spacer.gif' border='0' width='1' height='1' alt=''><br></td>
                                                        </tr>
                                                        <tr>
                                                            <td class='oddrow' colspan='5'><img src='/images/spacer.gif' border='0' width='1' height='3' alt=''><br></td>
                                                        </tr>
                                                        <tr>
                                                            <td class='oddrow'><input type='text' name='32' maxlength='80' onkeypress='return noenter(event)'  style='width: 60 '></td>
                                                            <td class='oddrow'>
                                                                <select name='33' style='width: 60 '>
                                                                    <option value='0' selected>Block</option>
                                                                    <option value='1' >Allow</option>
                                                                    <option value='2' >Redirect</option>
                                                                </select>
                                                            </td>
                                                            <td class='oddrow'><input type='text' name='34' maxlength='80' onkeypress='return noenter(event)'  style='width: 60 '></td>
                                                            <td class='oddrow' colspan='2' align='right' valign='middle'><input type='button' name='19' value='Add' onClick='submitForm(document.SiteFilterCfg,19,1,"","",0,"")' ></td>
                                                        </tr>
                                                        <tr>
                                                            <td class='oddrow' colspan='5'><img src='/images/spacer.gif' border='0' width='1' height='3' alt=''><br></td>
                                                        </tr>
                                                        <tr>
                                                            <td colspan='5' class='black'><img src='/images/spacer.gif' border='0' width='1' height='1' alt=''><br></td>
                                                        </tr>
                                                    </table>
                                                </td>
                                            </tr>
                                        </table>
                                    </form>
                                    <br>
                                    <table cellspacing='0' cellpadding='0' width='100%'>
                                        <tr>
                                            <td width='40' valign='top'><img src='/images/bull__md.gif' alt=''></td>
                                            <td valign='top'>
                                                <span class='blocktitle'>Content Based Filtering</span><br>
                                                <form name='ContentFilterCfg' action='/cgi/b/sfltr/content/cfg/' method='post'>
                                                    <table width='100%' class='datatable' cellspacing='0' cellpadding='0'>
                                                        <tr>
                                                            <td></td>
                                                            <td width='30px'></td>
                                                            <td width='220px'></td>
                                                            <td width='50px'></td>
                                                        </tr>
                                                        <tr>
                                                            <td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td>
                                                        </tr>
                                                        <tr>
                                                            <td width='170'>License Type:</td>
                                                            <td colspan='3'>None</td>
                                                        </tr>
                                                        <tr>
                                                            <td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td>
                                                        </tr>
                                                        <tr>
                                                            <td width='170'>License Expiration:</td>
                                                            <td colspan='3'>Unknown (server not yet contacted)</td>
                                                        </tr>
                                                        <tr>
                                                            <td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td>
                                                        </tr>
                                                        <tr>
                                                            <td width='170'>Use Content Based Filter:</td>
                                                            <td colspan='3'><input type='checkbox' name='30' value='1'   ></td>
                                                        </tr>
                                                        <tr>
                                                            <td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td>
                                                        </tr>
                                                        <tr>
                                                            <td width='170'>Action for uncategorised sites:</td>
                                                            <td colspan='3'>
                                                                <select name='31' style='width: 270px'>
                                                                    <option value='0' selected>Block</option>
                                                                    <option value='1' >Allow</option>
                                                                </select>
                                                            </td>
                                                        </tr>
                                                        <tr>
                                                            <td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td>
                                                        </tr>
                                                        <tr>
                                                            <td></td>
                                                            <td></td>
                                                            <td valign='bottom' colspan='2'>Block all categorized websites</td>
                                                        </tr>
                                                    </table>
                                                </form>
                                        <tr>
                                            <td height='7' colspan='4'><img src='/images/spacer.gif' width='1' height='7' border='0' alt=''></td>
                                        </tr>
                                        <tr>
                                            <td colspan='4' align='right'>
                                                <input type='button' name='10' value='Apply' onClick='submitForm(document.ContentFilterCfg,10,0,"","",0,"")' >
                                                <input type='button' name='11' value='Cancel' onClick='submitForm(document.ContentFilterCfg,11,0,"","",0,"")' >
                                            </td>
                                        </tr>
                                        </td></tr>
                                    </table>
                                </td>
                            </tr>
                        </table>
                    </td>
                </tr>
            </table>
        </div>
    </div>
</BODY>
</HTML>

の後の「2番目」のテーブルを削除したい<span class='blocktitle'>Content Based Filtering</span>。私が行っている機能ではなくremove()、黄色で着色しています。ページ全体が黄色いようです...「これ」が適切な範囲にないような気がします。

含まれているすべてのテーブルで一致するのではなく、最も内側のテーブルとそのテーブルだけを取得する方法はありますか?

編集:

Clav のおかげで、ドキュメント準備機能でそれを行う方法を見つけました。現在、「submitForm」をより賢くし、ページをリロードする代わりに div を更新しようとしています。

コードをコピーして貼り付けるだけで機能すると思いましたが、簡単には機能しませんでした...

ドキュメントで動作するコードの抜粋を次に示します。

$(document).ready(function(){   
content.load('/AJAX/test/cfg_3.html div .contentitem', function(content) {
   $(this).find('tbody').each(function(){
   $("span:contains('Content Based Filtering')").parent("td < tr < tbody < table").css("background-color", "yellow");
   });
document.getElementById("restart").style.display = "none";
document.getElementById("ready").style.display = "block";
});
});

しかし、送信フォームで同じことを行うと (送信には Ajax を使用します):

(function() {  
   // 
   var proxied = submitForm;
   submitForm = function(theForm, actionNo, flags, primkey, confirmMsg, anchor, eval_code, customP) {
        $.ajax({
            url: "/AJAX/test/cfg_3.html",
            // for test I do a get
      datatype: "html"
    })
    .done(function (html) {
                $(html).find('td').each(function(){
             $("span:contains('Content Based Filtering')").parent("td").parent("tr").parent("tbody").parent("table").css("background-color", "yellow");
          });
                content.html(html);
    })
    .fail(function (html) {
        window.location.reload();
    });
       }
   return false;
   })();

うまくいきません。 私の理解では、cfg3.html のソース コードに<tbody>タグが含まれていないためです。そこで、プレースホルダーに html を変更してロードし、それを変更しました (失敗したため、別の階層を試すことを断念しました)。

(function() {  
   // 
   var proxied = submitForm;
   submitForm = function(theForm, actionNo, flags, primkey, confirmMsg, anchor, eval_code, customP) {
        $.ajax({
            url: "/AJAX/test/cfg_3.html",
            // for test I do a get
      datatype: "html"
    })
    .done(function (html) {
                content.html(html);
          content.find('tbody').each(function(){
             $("span:contains('Content Based Filtering')").parent("td").parent("tr").parent("tbody").parent("table").css("background-color", "yellow");
          });
            })
    .fail(function (html) {
        window.location.reload();
    });
       }
   return false;
   })();

私の問題は、これが Firefox では機能するが、IE では機能しないことです...基本的には、submitForm で行っていたのと同じことを行っているため、理由がわかりませんdocument.ready

何か案が?

4

1 に答える 1

0

テーブルのセルを黄色に着色している​​コードは、ドキュメントのすべてのテーブル本体をループしており、そのループの行セレクターは特定のテーブルにスコープされていないため、実際にはドキュメント内のすべてのテーブル行をテーブルごとに 1 回繰り返し処理しています。それはページにあります。私があなたを正しく理解しており、テキスト「コンテンツベースのフィルタリング」を含む直後にtableクラスdatatableを取得したい場合は、これを行うことができるはずです:formspan

$("span:contains('Content Based Filtering')").next("form").children("table.datatable").css("background-color", "yellow"); 
于 2013-05-13T17:47:30.020 に答える