1

モバイル Web アプリに PhoneGap と jQuery Mobile を使用しています。onclick 属性に設定された MyFunction を実行しようとすると、コンソールにエラーが表示されます

Uncaught ReferenceError: MyFunction が定義されていません。

これは私のコードです:

<!DOCTYPE html>
<html>
<head>
 <title>Product</title>

<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" type="text/css" href="css/index.css" />
<link rel="stylesheet" href="css/jquery.mobile-1.3.1.min.css" />
<script type="text/javascript" src="cordova-2.7.0.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/jquery.mobile-1.3.1.min.js"></script>



<!--Generation Script Starts here -->
<script type="text/javascript">
function makeid()
{
    var text = "";
    var possible = "123456789";

    for( var i=0; i < 4; i++ )
        text += possible.charAt(Math.floor(Math.random() * possible.length));

    return text;
}

function makeid1()
{
    var text1 = "";
    var possible = "123456789";

    for( var i=0; i < 1; i++ )
        text1 += possible.charAt(Math.floor(Math.random() * possible.length));

    return text1;
}

function makeid2()
{
    var text2 = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    for( var i=0; i < 1; i++ )
        text2 += possible.charAt(Math.floor(Math.random() * possible.length));

    return text2;
}

function makeid3()
{
    var text3 = "";
    var possible = "123456789";

    for( var i=0; i < 2; i++ )
        text3 += possible.charAt(Math.floor(Math.random() * possible.length));

    return text3;
}

function myFunction()
{
              document.getElementById("demo").innerHTML="D01E-BOA0-" + makeid() + "-" + makeid1() + makeid2() + makeid3();
}

</script>
<!-- Generation Script Ends Here -->

</head>
<body>

<div data-role="page">

<div data-role="header" data-theme="b">
    <a href="index.html" data-role="button" data-icon="home" data-iconpos="notext" data-theme="b" data-iconshadow="false" data-inline="true">Home</a>
    <h1>Product</h1>
</div><!-- /header -->

<div data-role="content">


    <p id="demo" style="text-align:center;"></p>

    <input type="button" onclick="myFunction()" value="Generate!" data-theme="b">
</div><!-- /content -->


</div><!-- /page -->

</body>
</html>
4

2 に答える 2

1

これはあなたの問題を解決するかもしれません:

  1. onLoad のリスナーを本体に追加します。

    <body onLoad="fireItUp()">

  2. 呼び出されたメソッドを使用して、cordova の deviceready のイベント リスナーを追加します。

    function fireItUp() {
    document.addEventListener("deviceready", onDeviceReady, false);
    
    }
    
  3. コールバック メソッドを使用して、イベントを jquery モバイルの 'tap' イベントにバインドします (これはおそらく望ましくないすべての入力要素にバインドされるため、ボタンに ID またはクラスを指定することをお勧めします)。

    function onDeviceReady() {            
        jQuery(input).bind('tap',function(event){
        myFunction();
        });
    }
    
于 2013-05-21T14:57:18.837 に答える
1

これが役立つかどうかはわかりませんが、すべてのコードをドキュメントの準備ができている状態にラップし、clickjQuery で of ボタンを処理します。

<input type="button" id="generate" value="Generate!" data-theme="b">


$('#generate').on('click', function () {
    $("#demo").html("D01E-BOA0-" + makeid() + "-" + makeid1() + makeid2() + makeid3());
});

完全なコード:

$(function () {

    function makeid() {
        var text = "";
        var possible = "123456789";

        for( var i=0; i < 4; i++ ) {
            text += possible.charAt(Math.floor(Math.random() * possible.length));
        }

        return text;
    }

    function makeid1() {
        var text1 = "";
        var possible = "123456789";

        for( var i=0; i < 1; i++ ) {
            text1 += possible.charAt(Math.floor(Math.random() * possible.length));
        }

        return text1;
    }

    function makeid2() {
        var text2 = "";
        var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

        for( var i=0; i < 1; i++ ) {
            text2 += possible.charAt(Math.floor(Math.random() * possible.length));
        }

        return text2;
    }

    function makeid3() {
        var text3 = "";
        var possible = "123456789";

        for( var i=0; i < 2; i++ ) {
            text3 += possible.charAt(Math.floor(Math.random() * possible.length));
        }

        return text3;
    }

    $('#generate').on('click', function () {
        $("#demo").html("D01E-BOA0-" + makeid() + "-" + makeid1() + makeid2() + makeid3());
    });

});

このFIDDLEをチェックして、Android でテストします。

于 2013-05-21T14:47:24.923 に答える