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 :slight_smile:

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

3 Likes

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

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(){})

1 Like

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

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ứ?

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 :sweat_smile:

2 Likes

@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>
 <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

1 Like

Cảm ơn bạn :slight_smile:

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 :yum:

TypeError: random is not a function

1 Like

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 ?

1 Like

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()
3 Likes

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ỉ :slight_smile:

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

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?