01/10/2018, 14:18

Làm sao để tiếp tục onclick

Mình có làm một hàm javascript đơn giản. Gọi sự kiện bằng onclick để ra kết quả. Nhưng mình tiếp tục onlick thì bắt đầu báo lỗi, phải refresh trang mới tiếp tục onclick được. Liệu mình có cách gì để onlick để tiếp tục gọi lại sự kiện mà không phải refresh trang không các bạn. Vui lòng giúp mình một giải pháp, xin cảm ơn

*grab popcorn* viết 16:19 ngày 01/10/2018

Thì do lỗi nên nó mới ko onclick đc :3
Bạn nên debug lại code.

voss viết 16:26 ngày 01/10/2018

Mình onclick lần đầu nó vẫn trả kết quả mà

Dark.Hades viết 16:32 ngày 01/10/2018

Bạn dùng onclick cho một object được nhét vào DOM qua một sự kiện thì thành phần đó chưa được jquery load vào code, vậy nên sự kiện tiếp theo cho thành phần đó sẽ vô nghĩa.

Có thể dùng:
$(document).on(‘click’, ‘.class’, function(){})

voss viết 16:28 ngày 01/10/2018

@Dark.Hades Có giải pháp nào cho javascript không bạn

Dark.Hades viết 16:26 ngày 01/10/2018

Nhưng có đúng là hàm callback onclick của bạn tạo ra một element mới rồi append vào DOM không đã chứ?

stackoverflow.com
SolidSnake

Add onclick event to newly added element in JavaScript

javascript, events, new-operator, element
asked by SolidSnake on 07:39AM - 23 Jul 10
*grab popcorn* viết 16:20 ngày 01/10/2018

Mình onclick lần đầu nó vẫn trả kết quả mà

Nhưng bạn nói lần sau nó ra lỗi :3
Mình thấy thế nên nghĩ bạn xử lý sao đó lần sau bị văng Exception nên không onClick được.

Xin lỗi nếu hiểu sai ý bạn

voss viết 16:19 ngày 01/10/2018

@Dark.Hades của mình là như thế này:

 <input type="number" id="ketqua" name="ketqua" readonly="readonly"><br>
        <input type="button" name="dung" value="Chọn" onclick="random()"><br>
        <script type="text/javascript">
        function random(){
        	var ketqua = document.getElementById("ketqua");
        	random = Math.floor(Math.random() * 100) + 1;
        	ketqua.value = random;
       }	
</script>
Đào An viết 16:29 ngày 01/10/2018
 <input type="number" id="ketqua" name="ketqua" readonly="readonly"><br>
        <input type="button" name="dung" value="Chọn" onclick="random()"><br>
        <script type="text/javascript">
        function random(){
        	var ketqua = document.getElementById("ketqua");
        	let random = Math.floor(Math.random() * 100) + 1;
        	ketqua.value = random;
       }
</script>

Thiếu khai báo biến random. Chạy lần đầu được vì random được gán bằng giá trị Math.floor(Math.random() * 100) + 1 ở lần đầu rồi. thì lần sau làm gì còn random function nữa

voss viết 16:21 ngày 01/10/2018

Thiếu khai báo biến random. Chạy lần đầu được vì random được gán bằng giá trị Math.floor(Math.random() * 100) + 1 ở lần đầu rồi. thì lần sau làm gì còn random function nữa

Cảm ơn bạn

Thuc Nguyen Tan viết 16:24 ngày 01/10/2018

Thiếu khai báo biến random. Chạy lần đầu được vì random được gán bằng giá trị

Mình nghĩ không chính xác lắm

Bởi vì

    <script>
    function random_UMBALA() {
        var ketqua = document.getElementById("ketqua");
        random = Math.floor(Math.random() * 100) + 1;
        ketqua.value = random;
    }

</script>

<input id="ketqua" />
<button onclick="random_UMBALA();">test</button>

Đoạn code trên vẫn chạy tốt.=> Bạn này đặt tên hàm và biến trùng nhau làm máy tính hiểu nhầm

TypeError: random is not a function

Đào An viết 16:28 ngày 01/10/2018

Cách viết của chủ top tương đương với cách viết sau đây,

 <input type="number" id="ketqua" name="ketqua" readonly="readonly"><br>
        <input type="button" name="dung" value="Chọn" onclick="random()"><br>
        <script type="text/javascript">
        var random = function(){
        	var ketqua = document.getElementById("ketqua");
        	random = Math.floor(Math.random() * 100) + 1;
        	ketqua.value = random;
       }
</script>

Biến random lúc đầu là function, rồi chạy vào trong function bị gán thành giá trị. Nên lần sau ko chạy đc nữa do ko tìm thấy random function.
Code của t ko đổi tên biến vẫn chạy ầm ầm https://codepen.io/langtudatinh117/pen/VyojJg
Bạn đổi tên hàm/ biến chỉ là 1 cách để sửa chứ vẫn ko nói tôi sai chỗ nào ?

Hung viết 16:26 ngày 01/10/2018

Vì viết không đúng coding style, nên sinh ra mấy lỗi tào lao. Code của bạn phạm mấy nguyên tắc luôn:

  • Function bắt đầu là động từ
  • Biến bắt đầu là danh từ
  • Không viết global function
  • Riêng HTML, không dùng attribute để gọi JavaScript, nên dùng addEventListener()
voss viết 16:27 ngày 01/10/2018

Cảm ơn các bạn đã góp ý, mình đang học sẽ cố gắng thay đổi, tự học nên có đôi lúc viết hơi tự do. Có trang nào hướng dẫn mấy cái nguyên tắc để tập viết cho chuẩn không bạn nhỉ

voss viết 16:19 ngày 01/10/2018

Đoạn code trên vẫn chạy tốt.=> Bạn này đặt tên hàm và biến trùng nhau làm máy tính hiểu nhầm

TypeError: random is not a function

Cảm ơn bạn đã chỉ ra cho mình hiểu

Bài liên quan
0