最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Generate Random QR Code OnClick Using qrcode.js - Stack Overflow

programmeradmin0浏览0评论

I am using qrcode.js for generating qrcode. I want to generate random QR code every time I click into add new tab instead of add new qr code. I created a code for a random number but when I try to add onclick function it add new not to random it.

JSFIDDLE: /
GITHUB: .html
CODEPEN:

$('#lithird').click(function() {

    var qrcode = new QRCode("qrcode");

    function makeCode() {

        function randomNumber(len) {
            var randomNumber;
            var n = '';

            for (var count = 0; count < len; count++) {
                randomNumber = Math.floor(Math.random() * 10);
                n += randomNumber.toString();
            }
            return n;
        }

        var value = randomNumber(13);

        var elText = value;

        qrcode.makeCode(elText);
    }

    makeCode();

});    
#qrcode {
  width:160px;
  height:160px;
  margin-top:15px;
}
<script src=".12.3.min.js"></script>
<script src=".min.js"></script>
<script src=".3.7/js/bootstrap.min.js"></script>
<link href=".3.7/css/bootstrap.min.css" rel="stylesheet" />
<div class="container-fluid" id="main">
    <ul class="nav nav-tabs" role="tablist">
        <li role="presentation" id="lifirst" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">List</a></li>
        <li role="presentation" id="lithird"><a href="#editable" aria-controls="editable" role="tab" data-toggle="tab" onclick='transfer_new()'>Add New</a></li>
    </ul>
    <!--/ Nav tabs /-->

    <!-- Tab panes -->
    <div class="tab-content">
        <div role="tabpanel" class="tab-pane active" id="home" style="margin-top:  10px;">
            IN THE NEXT TABA THE AR CODE
        </div>
        <div role="tabpanel" class="tab-pane" id="editable">

            <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4 col-md-offset-4 col-lg-offset-4">
                <div id="qrcode"></div>
            </div>=
        </div>
    </div>
</div>

I am using qrcode.js for generating qrcode. I want to generate random QR code every time I click into add new tab instead of add new qr code. I created a code for a random number but when I try to add onclick function it add new not to random it.

JSFIDDLE: https://jsfiddle/aice09/L8pp9336/
GITHUB: https://github./Ailyn09/project102/blob/master/qrcode.html
CODEPEN: https://codepen.io/aice09/pen/Ogqajr

$('#lithird').click(function() {

    var qrcode = new QRCode("qrcode");

    function makeCode() {

        function randomNumber(len) {
            var randomNumber;
            var n = '';

            for (var count = 0; count < len; count++) {
                randomNumber = Math.floor(Math.random() * 10);
                n += randomNumber.toString();
            }
            return n;
        }

        var value = randomNumber(13);

        var elText = value;

        qrcode.makeCode(elText);
    }

    makeCode();

});    
#qrcode {
  width:160px;
  height:160px;
  margin-top:15px;
}
<script src="https://code.jquery./jquery-1.12.3.min.js"></script>
<script src="https://cdn.rawgit./davidshimjs/qrcodejs/gh-pages/qrcode.min.js"></script>
<script src="https://maxcdn.bootstrapcdn./bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn./bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<div class="container-fluid" id="main">
    <ul class="nav nav-tabs" role="tablist">
        <li role="presentation" id="lifirst" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">List</a></li>
        <li role="presentation" id="lithird"><a href="#editable" aria-controls="editable" role="tab" data-toggle="tab" onclick='transfer_new()'>Add New</a></li>
    </ul>
    <!--/ Nav tabs /-->

    <!-- Tab panes -->
    <div class="tab-content">
        <div role="tabpanel" class="tab-pane active" id="home" style="margin-top:  10px;">
            IN THE NEXT TABA THE AR CODE
        </div>
        <div role="tabpanel" class="tab-pane" id="editable">

            <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4 col-md-offset-4 col-lg-offset-4">
                <div id="qrcode"></div>
            </div>=
        </div>
    </div>
</div>

Share Improve this question edited Jul 15, 2017 at 6:03 Talha Awan 4,6194 gold badges26 silver badges40 bronze badges asked Jul 15, 2017 at 5:55 AilynAilyn 2952 gold badges6 silver badges17 bronze badges
Add a ment  | 

5 Answers 5

Reset to default 2

Try adding $('#qrcode').html(''); as the first item in the .click(function(){}

Like this:

$('#lithird').click(function(){      

    $('#qrcode').html('');  // <---Add this, which should clear it out on the next click

    var qrcode = new QRCode("qrcode");

    function makeCode () {      

        function randomNumber(len) {
        var randomNumber;
        var n = '';

        for(var count = 0; count < len; count++) {
            randomNumber = Math.floor(Math.random() * 10);
            n += randomNumber.toString();
        }
        return n;
    }

    var value = randomNumber(13);
        var elText = value;

        qrcode.makeCode(elText);
    }

    makeCode();

});

Codepen for full review

You were missing a function transfer_new defined in your onclick that was causing a JavaScript error.

function transfer_new() {
    $('#qrcode').html('');
}

$('#lithird').click(function() {

    var qrcode = new QRCode("qrcode");

    function makeCode() {

        function randomNumber(len) {
            var randomNumber;
            var n = '';

            for (var count = 0; count < len; count++) {
                randomNumber = Math.floor(Math.random() * 10);
                n += randomNumber.toString();
            }
            return n;
        }

        var value = randomNumber(13);

        var elText = value;

        qrcode.makeCode(elText);
    }

    makeCode();

});
#qrcode {
  width:160px;
  height:160px;
  margin-top:15px;
}
#qrcode img {
    margin: 15px;
    border: 5px solid black;
}
<script src="https://code.jquery./jquery-1.12.3.min.js"></script>
<script src="https://cdn.rawgit./davidshimjs/qrcodejs/gh-pages/qrcode.min.js"></script>
<script src="https://maxcdn.bootstrapcdn./bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn./bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<div class="container-fluid" id="main">
    <ul class="nav nav-tabs" role="tablist">
        <li role="presentation" id="lifirst" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">List</a></li>
        <li role="presentation" id="lithird"><a href="#editable" aria-controls="editable" role="tab" data-toggle="tab" onclick='transfer_new()'>Add New</a></li>
    </ul>
    <!--/ Nav tabs /-->

    <!-- Tab panes -->
    <div class="tab-content">
        <div role="tabpanel" class="tab-pane active" id="home" style="margin-top:  10px;">
            IN THE NEXT TABA THE AR CODE
        </div>
        <div role="tabpanel" class="tab-pane" id="editable">

            <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4 col-md-offset-4 col-lg-offset-4">
                <div id="qrcode"></div>
            </div>=
        </div>
    </div>
</div>

Just clear the content before generating new

    function randomNumber(len) {
        var randomNumber;
        var n = '';

        for (var count = 0; count < len; count++) {
            randomNumber = Math.floor(Math.random() * 10);
            n += randomNumber.toString();
        }
        return n;
    }

    $('#lithird').click(function() {

            var value = randomNumber(13);
            $("#qrcode").html("");
            var qrcode = new QRCode("qrcode");
            qrcode.makeCode(value);

    });    
    #qrcode {
      width:160px;
      height:160px;
      margin-top:15px;
    }
    <script src="https://code.jquery./jquery-1.12.3.min.js"></script>
    <script src="https://cdn.rawgit./davidshimjs/qrcodejs/gh-pages/qrcode.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn./bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn./bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
    <div class="container-fluid" id="main">
        <ul class="nav nav-tabs" role="tablist">
            <li role="presentation" id="lifirst" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">List</a></li>
            <li role="presentation" id="lithird"><a href="#editable" aria-controls="editable" role="tab" data-toggle="tab" >Add New</a></li>
        </ul>
        <!--/ Nav tabs /-->

        <!-- Tab panes -->
        <div class="tab-content">
            <div role="tabpanel" class="tab-pane active" id="home" style="margin-top:  10px;">
                IN THE NEXT TABA THE AR CODE
            </div>
            <div role="tabpanel" class="tab-pane" id="editable">

                <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4 col-md-offset-4 col-lg-offset-4">
                    <div id="qrcode"></div>
                </div>
            </div>
        </div>
    </div>

$(".generatetext").click(function(e) {
    e.preventDefault();
    var x =  randomNumber(13);
    $('#output').html('').qrcode(x);
});

 function randomNumber(len) {
            var randomNumber;
            var n = '';

            for (var count = 0; count < len; count++) {
                randomNumber = Math.floor(Math.random() * 10);
                n += randomNumber.toString();
            }
            return n;
        }
#output{border:1px solid #eee;min-height:200px;width:200px;}
.container{padding:10px;}
<link href="https://maxcdn.bootstrapcdn./bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis./ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare./ajax/libs/jquery.qrcode/1.0/jquery.qrcode.min.js"></script>
<div class="container">
  <form class="form-inline">
    <div class="form-group">
      <button class="btn btn-primary generatetext">Generate Random QR Code</button>
    </div>
  </form>
  <div class="container">
    <div id="output" class="text-center"></div>
  </div>
</div>

$('#lithird').click(function() {

    var qrcode = new QRCode("qrcode");

    function makeCode() {

        function randomNumber(len) {
            var randomNumber;
            var n = '';

            for (var count = 0; count < len; count++) {
                randomNumber = Math.floor(Math.random() * 10);
                n += randomNumber.toString();
            }
            return n;
        }

        var value = randomNumber(13);

        var elText = value;

        qrcode.makeCode(elText);
    }

    makeCode();

});    
#qrcode {
  width:160px;
  height:160px;
  margin-top:15px;
}
<script src="https://code.jquery./jquery-1.12.3.min.js"></script>
<script src="https://cdn.rawgit./davidshimjs/qrcodejs/gh-pages/qrcode.min.js"></script>
<script src="https://maxcdn.bootstrapcdn./bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn./bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<div class="container-fluid" id="main">
    <ul class="nav nav-tabs" role="tablist">
        <li role="presentation" id="lifirst" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">List</a></li>
        <li role="presentation" id="lithird"><a href="#editable" aria-controls="editable" role="tab" data-toggle="tab" onclick='transfer_new()'>Add New</a></li>
    </ul>
    <!--/ Nav tabs /-->

    <!-- Tab panes -->
    <div class="tab-content">
        <div role="tabpanel" class="tab-pane active" id="home" style="margin-top:  10px;">
            IN THE NEXT TABA THE AR CODE
        </div>
        <div role="tabpanel" class="tab-pane" id="editable">

            <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4 col-md-offset-4 col-lg-offset-4">
                <div id="qrcode"></div>
            </div>=
        </div>
    </div>
</div>

发布评论

评论列表(0)

  1. 暂无评论