0

スクリプトをhtmlファイルに直接書き、ページネーション機能を追加し、HTMLファイルになるまでは問題なく動作しますが、このスクリプトを外部jsファイルに転送してそこから実行する方法がわかりません。だからここにHTML部分があります:

<form id="moredisplay" method="get" style="display:inline;">
            <input class="hiddeninteger" type="hidden" name="loadmore" value="">
            <!--LIMIT CHANGER-->
            <input type="checkbox" title="" id="limitcheck" name="limit" value="<?php echo $vsego;?>" style="display:none;">
            <input type="checkbox" title="" id="skipforfcheck" name="skip_items" value="" style="display:none;">
            <input type="checkbox" title="" id="skipbackcheck" name="skip_items" value="" style="display:none;">
            <button type="submit" title="back" value="" id="rerurn_more_items"/>back</button>
            <button type="submit" title="next" value="" id="skip_more_items"/>fowards</button>
            <button type="submit" title="more content" value="<?php echo $vsego;?>" id="limit" name="limit" onclick=""/>more content</button>
            <script>
                var currentval = jQuery('.scippeditems').attr('value');
                jQuery('#skip_items,#rerurn_items').attr('value',currentval);
                var valuenumber = jQuery('#skip_items').val();
                if (valuenumber == 0){
                jQuery('#rerurn_items').attr('disabled', 'disabled').css({'opacity':'0.6'});
                }
                var itemsshow = jQuery('#limit').val();
                var pagescount = (jQuery('#skip_items').attr('value'))/(jQuery('#limit').attr('value'));
                if(pagescount >=5){jQuery('#skip_items, #limit').attr('disabled', 'disabled').css({'opacity':'0.6'});}//COUNT PAGES AND LOCK NEXT
                function changepageforf(){
                var elem = document.getElementById("skip_items");
                var currentval = elem.value;
                elem.value = parseInt(currentval) + 24;}//parseInt(itemsshow);}
                function changepageback(){
                var elem = document.getElementById("rerurn_items");
                var currentval = elem.value;
                elem.value = parseInt(currentval) - 24;}//parseInt(itemsshow);}
                </script>
                <script>
                jQuery(document).ready(function(){
                jQuery('#limit').click(changelimit);//RUN FUNCTION ON LIMIT CHANGE
                if ( document.location.href.indexOf('&limit') > -1 ) {//IF URL CONTAINS LINES LIMIT
                jQuery('#rerurn_items, #skip_items').hide()//HIDE PAGINATION
                jQuery('#rerurn_more_items, #skip_more_items').show()//SHOW LIMIT PAGINATION
                var checkval = jQuery('#limitcheck').attr('value');
                var currentvalskip = jQuery('.scippeditems').attr('value');
                jQuery('#skipforfcheck').attr('value', (parseInt(checkval)+parseInt(currentvalskip)));//NEXT BTN VALUE
                var currentforfaction = jQuery('#skipforfcheck').attr('value')
                jQuery('#skipbackcheck').attr('value',Math.ceil( ( (parseInt(currentforfaction)-parseInt(checkval) ) - parseInt(checkval) ) ) );//PREV BTN VALUE
                var pagescount = (jQuery('#skipforfcheck').attr('value'))/(jQuery('#limitcheck').attr('value'));
                if(pagescount >=5){jQuery('#skip_more_items, #limit').attr('disabled', 'disabled').css({'opacity':'0.6'});}//COUNT PAGES AND LOCK NEXT
                if( jQuery('#skipbackcheck').attr('value') <= 0 ){ jQuery('#skipbackcheck').attr('value', 0 );}//RETURN 0 AS A VALUE IF NEGATIVE
                jQuery('#skip_more_items').click(function(){//SUBMIT NEXT BTN
                    jQuery('#limitcheck').attr('checked', true);
                    jQuery('#skipforfcheck').attr('checked', true);
                    jQuery('#moredisplay').submit()
                });
                jQuery('#rerurn_more_items').click(function(){//SUBMIT PREV BTN
                    jQuery('#limitcheck').attr('checked', true);
                    jQuery('#skipbackcheck').attr('checked', true);
                    jQuery('#moredisplay').submit()
                });
                }
                function changelimit(){//LIMIT INCREASE STEP
                var elem = document.getElementById("limit");
                var currentval = elem.value;
                elem.value = parseInt(currentval) + 6;}//HOW MUCH
                var valuenumber = jQuery('#skip_items').val();
                if (valuenumber == 0){//HIDE PREV BTN IF NO PREV
                jQuery('#rerurn_more_items').attr('disabled', 'disabled').css({'opacity':'0.6'});
                }
                });
            </script>
    </form>

私が試したこと:スクリプトをコピーしてpagination.jsファイルに入れ、このようにページの上部にあるスクリプトを呼び出しました

$document =& JFactory::getDocument();
$document->addScript("jquery/pagination.js");

しかし、それは機能しません...私はjQueryを初めて使用するので、愚かなだけなら私を叩かないでください:L)

4

3 に答える 3

1

コードを次のようにラップする必要があります。

$(document).ready( function() {
    // your code here 
});
于 2013-03-03T13:12:12.753 に答える
0

Aspiring Aqib が指摘したように、JQuery スクリプトを次のいずれかで開始する必要があります。

$(document).ready( function() {
    // your code here 
});

また

$(function() {
    // your code here 
});

これは基本的に、「その関数内でスクリプトを実行する前に、DOM が完全に作成されるまで待ってください」と言っています。

于 2013-03-03T13:17:11.840 に答える
0

Aspiring Aqib と Dave はどちらも、jQuery コードを$(function(){//code goes here});ブロックにラップすることについては正しかったです。

しかし、もう 1 つのよくある間違いは、jQuery ライブラリ ファイルと独自の .js ファイルを正しい順序でロードしないことです。これは、エディターやブラウザーのどこにも警告がないため、見つけるのが難しい場合があります。jQuery ライブラリは、すべての独自の .js ファイルの前に配置する必要があります。

于 2013-04-13T19:24:15.697 に答える