dongliqin6939 2014-08-13 02:41
浏览 85
已采纳

使用href传递信息时,javascript不会执行

In the index.php I use href to send value to another php file;

<a href="orderinfo.php?type=11" class="ui-btn ui-shadow">order</a>

and the orderinfo.php is like below.

<html>
<head>

  <script type="text/javascript">
    function disableOption()
    {
        console.log("hello");
    }
  </script>

</head>
<body onload="disableOption()">
</body>

</html>

When I click the href in the main.php. it direct me to the orderinfo.php. but the function disableOption() will not excute till I refresh the website by myself. What's the problem here.

I don't know why . but is I don't add the type=11.It works fine.

<a href="orderinfo.php?" class="ui-btn ui-shadow">order</a>

try to clear the cache.and also add

<!-- no cache-->
<meta HTTP-EQUIV="pragma" CONTENT="no-cache">  
<meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">  
<meta HTTP-EQUIV="expires" CONTENT="0"> 

still not work. I need to refresh the page manually, and the console will show the log info.. It's weird.should I put the whole web page here. because It's too big..

below is the whole webpage.

<!DOCTYPE html>
<head>
<title>index</title>
<!--prevent from become to big on desktop-->
<meta name="viewport" content="width=device-width, initial-scale=1" charset="UTF-8">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.css" />
<!--import the JQuery JSlib-->
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.js"></script>
<!--Custom CSS-->
<style>     
#ad{
    text-align:center;
}
.pic{
    margin-left:0;
}
.price{

}
.discount{
    color:red;
}
.order{
    float:left;
    margin-left:40px;
}


.custom-corners .ui-bar {
    margin-top:10px;
    -webkit-border-top-left-radius: inherit;
    border-top-left-radius: inherit;
    -webkit-border-top-right-radius: inherit;
    border-top-right-radius: inherit;
}
.custom-corners .ui-body {
    border-top-width: 0;
    -webkit-border-bottom-left-radius: inherit;
    border-bottom-left-radius: inherit;
    -webkit-border-bottom-right-radius: inherit;
    border-bottom-right-radius: inherit;
}

</style>
</head>
<body>

<div data-role="page" class="page">

<div data-role="header" style="overflow:hidden;" data-position="fixed">
    <h1>deal</h1>
        <a href="#" data-icon="gear" class="ui-btn-right">option</a>

</div><!-- /header -->

<div role="main" class="ui-content" class="jqm-main">
    <div data-role="tabs" id="tabs" class="jqm-tab">

        <div data-role="navbar">
            <ul>
                <li><a href="#one">1</a></li>
                <li><a href="#two">2</a></li>
            </ul>
        </div><!-- /navbar -->

        <div id="one">

            <div class="ui-corner-all custom-corners">
                <div class="ui-bar ui-bar-a">
                    <h3>1</h3>
                </div>

                <div class="ui-body ui-body-a">
                    <img class="pic" src="img/1.jpg">
                    <fieldset class="ui-grid-a">
                        <div class="ui-block-a"><p class="price">100</p></div>
                        <div class="ui-block-b"><p class="discount">80</p></div>
                    </fieldset>
                    <a href="orderinfo.php?type=11" class="ui-btn ui-shadow">order</a>
                </div>
            </div>


            <div class="ui-corner-all custom-corners">
                <div class="ui-bar ui-bar-a">
                    <h3>2</h3>
                </div>

                <div class="ui-body ui-body-a">
                    <img class="pic" src="img/2.jpg">
                    <fieldset class="ui-grid-a">
                        <div class="ui-block-a"><p class="price">100</p></div>
                        <div class="ui-block-b"><p class="discount">80</p></div>
                    </fieldset>
                    <a href="orderinfo.php?type=12" class="ui-btn ui-shadow">order</a>
                </div>
            </div>


            <div class="ui-corner-all custom-corners">
                <div class="ui-bar ui-bar-a">
                    <h3>3</h3>
                </div>

                <div class="ui-body ui-body-a">
                    <img class="pic" src="img/3.jpg">
                    <fieldset class="ui-grid-a">
                        <div class="ui-block-a"><p class="price">100</p></div>
                        <div class="ui-block-b"><p class="discount">80</p></div>
                    </fieldset>
                    <a href="orderinfo.php?type=13" class="ui-btn ui-shadow">order</a>
                </div>
            </div>

        </div>

        <div  id="two">


            <h3 class="ui-bar ui-bar-a ui-corner-all">1</h3>
                <div class="ui-body">
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse accumsan blandit fermentum. Pellentesque cursus mauris purus, auctor commodo mi ullamcorper nec. Donec semper mattis eros, nec condimentum ante sollicitudin quis. Etiam orci sem, porttitor ut tellus nec, blandit posuere urna. Proin a arcu non lacus pretium faucibus. Aliquam sed est porttitor, ullamcorper urna nec, vehicula lorem. Cras porttitor est lorem, non venenatis diam convallis congue.</p>
                </div>

            <h3 class="ui-bar ui-bar-a ui-corner-all">2</h3>
                <div class="ui-body">
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse accumsan blandit fermentum. Pellentesque cursus mauris purus, auctor commodo mi ullamcorper nec. Donec semper mattis eros, nec condimentum ante sollicitudin quis. Etiam orci sem, porttitor ut tellus nec, blandit posuere urna. Proin a arcu non lacus pretium faucibus. Aliquam sed est porttitor, ullamcorper urna nec, vehicula lorem. Cras porttitor est lorem, non venenatis diam convallis congue.</p>
                </div>

            <h3 class="ui-bar ui-bar-a ui-corner-all">3</h3>
                <div class="ui-body">
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse accumsan blandit fermentum. Pellentesque cursus mauris purus, auctor commodo mi ullamcorper nec. Donec semper mattis eros, nec condimentum ante sollicitudin quis. Etiam orci sem, porttitor ut tellus nec, blandit posuere urna. Proin a arcu non lacus pretium faucibus. Aliquam sed est porttitor, ullamcorper urna nec, vehicula lorem. Cras porttitor est lorem, non venenatis diam convallis congue.</p>
                </div>

        </div>

    </div>

</div><!-- /content -->

<div data-role="footer" data-position="fixed">
    <h4>Powered by ATekNetwork</h4>
</div><!-- /footer -->
</div><!-- /page -->

</body>
</html>

Below is the orderinfo.php

<!DOCTYPE html>
<head>
<title>info</title>
<!--prevent from become to big on desktop-->
<meta name="viewport" content="width=device-width, initial-scale=1" charset="UTF-8">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.css" />
<!--import the JQuery JSlib-->
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.js"></script>


<!--Custom JavaScript-->
<script type="text/javascript">

    function disableOption()
    {

        //using flag to determin the selected options
        var flag;

        var objToday = new Date();

        //curHour = objToday.getHours() > 12 ? objToday.getHours() - 12 : (objToday.getHours() < 10 ? "0" + objToday.getHours() : objToday.getHours());
        //get the time from the client device  NOTICE bug: if the time from the device is wrong may cause problem.
        curHour = objToday.getHours();

        if(curHour < 11){
            flag = 0;
            console.log("hello");
        }
        else if(curHour >= 11 && curHour < 12){
            flag = 1;
        }
        else if(curHour >= 12 && curHour < 13){
            flag = 2;
        }
        else{
            flag= 3;
        }


        console.log(curHour);
        var select = document.getElementById('select-choice-1');

        if(flag == 0){

            for (var i=0, option; option = select.options[i]; i++)
            {
                option.disabled = false;

            }

            //emulate(select);
        }

        if(flag == 1){

            for (var i=1, option; option = select.options[i]; i++)
            {
                option.disabled = false;

            }
            //emulate(select);

        }

        if(flag == 2){

            for (var i=2, option; option = select.options[i]; i++)
            {
                option.disabled = false;

            }
            //emulate(select);

        }

        if(flag == 3){

            for (var i=0, option; option = select.options[i]; i++)
            {
                option.disabled = true;

            }
            //emulate(select);

        }


    }
</script>
<!--Custom CSS-->
<style>


</style>
</head>
<body onload="disableOption()">

<div data-role="page" class="page">

<div data-role="header" style="overflow:hidden;" data-position="fixed">
    <h1>info</h1>
        <a href="#" data-icon="gear" class="ui-btn-right">option</a>

</div><!-- /header -->

<div role="main" class="ui-content" class="jqm-main">

<?php

    $type = $_GET['type']; 
    $info = "";

    if($type == 11){

        $info = "1";

    }

    if($type == 12){

        $info = "2";

    }

    if($type == 13){

        $info = "3";

    }

?>

<h3 class="ui-bar ui-bar-a ui-corner-all">info</h3>



<form action="sendmail.php" method="get">
    <ul data-role="listview" data-inset="true">
                    <li class="ui-field-contain">
                        <label for="name">name</label>
                        <input type="text" name="name" id="name" data-clear-btn="true">

                    </li>


                    <li class="ui-field-contain">
                        <div class="ui-field-contain">
                        <label for="textinput-disabled">type</label>
                        <input readonly="readonly" type="text" name="textinput-disabled" id="textinput-disabled" placeholder="Text input" value="<?php echo $info;?>">
                        </div>

                    </li>

                    <li class="ui-field-contain">
                        <label for="phone">phone</label>
                        <input type="text" name="phone" id="phone" data-clear-btn="true">

                    </li>


                    <li class="ui-field-contain">
                        <label for="address">adress</label>
                        <input type="text" name="address" id="address" data-clear-btn="true">

                    </li>

                    <li class="ui-field-contain">

                        <label for="slider-2">num</label>
                        <input type="range" name="slider-2" id="slider-2" data-mini="true" data-highlight="true" min="0" max="40" value="1" data-clear-btn="true">

                    </li>


                    <li class="ui-field-contain">

                        <div data-role="fieldcontain">
                        <label for="select-choice-1" class="select">time</label>
                        <select name="select-choice-1" id="select-choice-1">
                                <option disabled="disabled" value="11-12">11-12</option>
                                <option disabled="disabled" value="12-1">12-1</option>
                                <option disabled="disabled" value="1-2">1-2</option>
                        </select>
                        </div>


                    </li>

                    <li class="ui-body ui-body-b">
                        <fieldset class="ui-grid-a">
                            <div class="ui-block-a"><button type="reset" class="ui-btn ui-corner-all ui-btn-a">reset</div>
                            <div class="ui-block-b"><button type="submit" class="ui-btn ui-corner-all ui-btn-a" data-ajax="false">submit</div>
                        <fieldset>
                    </li>

                </ul>

</form><!--end form-->
</div><!-- /content -->

<div data-role="footer" data-position="fixed">
    <h4>Powered by ATekNetwork</h4>
</div><!-- /footer -->
</div><!-- /page -->

</body>
</html>

Finaly I find the problem, the problem is that weird problem in JQuery mobile. if you Put Your script code in the head element .It will not load into the dom till the web refresh.

So we can put the scripts into the tag below.

<div data-role="page" class="page">

<script>
//your javascirpt code goes here
</script>
</div>

and it works..

  • 写回答

2条回答 默认 最新

  • donqh00404 2014-08-13 02:48
    关注

    You should load your script at the bottom of the page, it is a better practice, that way it loads after the page. Also, if you are using HTML5, you should no longer have to declare the script type.

    <html>
    <head>
    
    </head>
    <body>
    
        <!-- your content -->
    
    
    
        <script>
        function disableOption(){
            console.log("hello");
        }
        disableOption();
        </script>
    </body>
    </html>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元