0

外部 URL からロードされた js ウィジェットから文字列「Marc」を含まないすべてのテーブル行を非表示にしようとしています。

<script type="text/javascript">
  id = "ki1120mmvd";
  name = "schedules";
  document.write(unescape("%3Cscript src='http://healcode.com/javascripts/hc_widget.js' type='text/javascript'%3E%3C/script%3E"));
</script>

クラスIDまたは属性を使用してcssでテーブル行内のいくつかの要素を非表示にすることができましたが、行を完全に削除するにはjs/jquery/phpが必要なようで、見つかったものはすべて機能していません.

コードを入手した場所へのリンクは次のとおりです: http://www.funkydoor.com/studio_polk_street.html

これが私がそれをどのように使用しているかです: http://www.marcmatisyoga.com/schedule.html

4

3 に答える 3

0

このクライアント側を実行したい場合は、JQueryを試してください。このメソッドを使用して、$.eachすべての要素を反復処理し、「Marc」を含まない要素を削除できます。

$(document).ready(function() {
    $('.schedule tr').each(function(index){
         if ($(this).html().indexOf('Marc') === -1)
             $(this).hide();
    });
});
于 2013-01-08T10:37:19.627 に答える
0

:containsセレクターは完璧な選択です。しかし、あなたの特定のケースでは、それを機能させるためにもう少し努力する必要があります. 私のテストでは、動的にロードされる外部スクリプトのいくつかの壊れた URL が原因で、jQueryまたは. 回避策は、テーブル (およびその他の外部スクリプト) のロード後に APIをリロードすることです。$undefinedjQuery

[アップデート]

.html正しい構造をレンダリングすると思われるファイルのコンテンツ全体を再投稿しています(私にとっては、Chromeで動作します)。目的のフォントの色と URL の書式設定を実現するために必要な変更がまだいくつかあります。これは、以下で行ったように、jQuery.css()関数で実装できます。その点に注意してください:

  1. <style>...</style>タグを完全に削除し、
  2. 外部スクリプトが動的にロードされた直後に、のタグでwaitForFnc関数を呼び出しています。<body><script>

完全なスタイルの書式設定を表示するために水平スクロールが必要であることをお詫びしjQueryますが、独自の書式設定を適用して変更するまでは、ソリューションとはあまり関係ありません。

<html>
    <head>

        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
        <script>
            var count=0;

            function waitForFnc(){
                if(typeof $ != "undefined")
                {
                    if($("tr.bikram_yoga").length==0){
                       window.setTimeout(waitForFnc,50);
                    }
                    else
                    {
                            $(" div.healcode .header, div.healcode table.schedule tr th, div.healcode table.schedule tr.odd td, div.healcode table.schedule tr.even td").css("background-color","#f4f4f4");
                            $(".location, span.print_text, a.print_version, .mbo_class, span.day_links, .header, span.hc_date_year, div:nth-of-type(10), a[href*='100000210'], a[href*='/13/'], a[href*='100000242'], a[href*='100000201'], a[href*='/142/'], a[href*='100000174'], a[href*='100000229'], a[href*='100000053'],th.trainer").hide();
                            $("div.healcode").css("padding","20px 0 0 20px !important");
                            $("div.healcode span.hc_day").css({"margin-left": "0 !important",
            "text-align": "left !important"});
                            $("div.healcode table.schedule").css("border","none !important");
                            $("table .schedule, tr schedule_header th").css("background-color","#f4f4f4");
                            $("tr.bikram_yoga").not(":contains('Marc')").hide();
                    }
                }
                else{
                    if(count==0){
                        var oHead = document.getElementsByTagName('HEAD').item(0);
                        var oScript= document.createElement("script");
                        oScript.type = "text/javascript";
                        oScript.src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js";
                        oHead.appendChild( oScript);
                        count=count+1;
                    }
                    window.setTimeout(waitForFnc,50);
                }
            }
        </script>
    </head>
    <body>
        <table>
            <tr>
                <td align="left" valign="top">
                <div style="background-color: white;">
                <script type="text/javascript">
                    id = "ki1120mmvd";
                    name = "schedules";
                    document.write(unescape("%3Cscript src='http://healcode.com/javascripts/hc_widget.js' type='text/javascript'%3E%3C/script%3E"));
                    waitForFnc();
                </script>
                <noscript class="normal_left_yellow">
                    Please enable Javascript in order to view the class schedule: <a href="http://healcode.com" target="_blank">HealCode</a>
                </noscript>
                </div>
                </td>
            </tr>
        </table>
    </body>
</html>
于 2013-01-08T12:41:14.187 に答える
0

jQueryセレクターを使用して:contains()、それに基づいて情報を非表示にすることができます。

  $("div").not(":contains('marc')").hide();

クイックデモ

于 2013-01-08T10:34:40.783 に答える