Làm cách nào để tạo một máy tính đơn giản bằng JavaScript?
Hướng dẫn hoành tráng này cung cấp một bài tập vững chắc cho những người mới bắt đầu sử dụng JavaScript bằng cách mô tả cách có thể phát triển một ứng dụng máy tính đơn giản bằng ngôn ngữ này Show
Dự án JavaScript dành cho người mới bắt đầu (sê-ri 8 phần)
Ứng dụng máy tính mà chúng ta sẽ phát triển trong hướng dẫn này rất đơn giản. Nó ít nhiều theo cách của những máy tính được tìm thấy tại các cửa hàng tạp hóa. Bố cục của ứng dụng được tạo bằng lưới CSS. Nếu bạn muốn tìm hiểu cách đạt được nó, hãy nhớ xem hướng dẫn này vì hướng dẫn này chỉ tập trung vào logic JavaScript được sử dụng để làm cho máy tính hoạt động Đây là bản demo trực tiếp của dự án đã hoàn thành. Bạn có thể chơi xung quanh nó để cảm nhận về những gì bạn sẽ xây dựng trước khi lao vào điều kiện tiên quyếtHướng dẫn này giả định rằng bạn đã có kiến thức cơ bản về JavaScript. Tôi sẽ chia nhỏ từng bước một cách tốt nhất có thể để bạn có thể dễ dàng làm theo ngay cả khi bạn chưa có kinh nghiệm xây dựng ứng dụng trong trình duyệt trước đó Trước khi bắt đầuBạn có thể tìm điểm bắt đầu cho hướng dẫn này trên JSFiddle. Nó chứa tất cả các đánh dấu và kiểu cần thiết được sử dụng để tạo bố cục máy tính. Đánh dấu gần giống với trạng thái cuối cùng của hướng dẫn trước, trong đó tôi đã thảo luận về cách tạo bố cục máy tính, nhưng tôi đã thực hiện một số thay đổi nhỏ, vì vậy hãy đảm bảo sử dụng thay đổi này Bắt đầu bằng cách rẽ nhánh mã sang một câu đố mới và làm theo bằng cách nhập từng bước cho đến khi kết thúc. Vui lòng thực hiện hướng dẫn này trên các sân chơi mã trực tuyến khác hoặc trên máy cục bộ của bạn nếu bạn thích Bắt đầuBất kỳ ai cũng có thể thực hiện bốn phép toán số học phổ biến nhất (cộng, trừ, nhân và chia) trên ứng dụng máy tính của chúng tôi bằng cách xây dựng một biểu thức hợp lệ bằng cách sử dụng các nút nhập và hiển thị kết quả trên màn hình. Một ví dụ về biểu thức hợp lệ được hiển thị bên dưới
Để xây dựng một biểu thức số học hợp lệ, chúng ta cần theo dõi một số điều. toán hạng thứ nhất ( 9), toán tử ( 0) và toán hạng thứ hai (_______2_______1)Hãy bắt đầu bằng cách tạo một đối tượng để giúp chúng tôi theo dõi các giá trị này. Thêm mã sau vào đầu ngăn JavaScript trong JSFiddle
Đối tượng 2 ở trên bao gồm mọi thứ mà chúng ta cần để xây dựng một biểu thức hợp lệ
Cập nhật màn hìnhHiện tại, màn hình máy tính trống. Chúng tôi cần nội dung của thuộc tính 3 luôn được hiển thị trên màn hình. Chúng tôi sẽ tạo một chức năng cho mục đích này để bất cứ khi nào một thao tác được thực hiện trong ứng dụng, chúng tôi luôn có thể gọi nó để cập nhật màn hình với nội dung của 3Hãy tiếp tục và nhập nội dung này bên dưới đối tượng 2
Nếu bạn nhìn vào mã HTML của ứng dụng, bạn sẽ thấy rằng “màn hình” thực sự chỉ là một kiểu nhập văn bản bị vô hiệu hóa
Chúng tôi không thể nhập trực tiếp bằng bàn phím, nhưng chúng tôi có thể thay đổi giá trị của nó bằng JavaScript. Và đó là chức năng của hàm 3. Bây giờ bạn sẽ thấy số không hiển thị trên màn hình của máy tínhHãy thư giãn và xem mã hoàn chỉnh ở cuối bước này Xử lý phím bấmChúng tôi có bốn bộ chìa khóa trên máy tính. chữ số (0-9), toán tử (+, −, ⨉, ÷, =), dấu thập phân (. ) và phím đặt lại (AC). Trong phần này, chúng tôi sẽ lắng nghe tiếng bấm trên các phím máy tính và xác định loại phím nào đã được bấm Thêm đoạn mã này vào cuối tab JavaScript
Trong đoạn mã trên, chúng ta đang lắng nghe một sự kiện 4 trên phần tử có lớp là 5. Vì tất cả các phím trên máy tính đều là con của phần tử này nên sự kiện 4 cũng lọc xuống chúng. Điều này được gọi là ủy quyền sự kiệnBên trong chức năng gọi lại của trình xử lý sự kiện, chúng tôi trích xuất thuộc tính 7 của sự kiện nhấp chuột bằng cách sử dụng phép gán phá hủy giúp dễ dàng giải nén các thuộc tính đối tượng thành các biến riêng biệt
Biến 7 là một đối tượng đại diện cho phần tử đã được nhấp vào. Nếu phần tử này không phải là nút (chẳng hạn như nếu bạn nhấp vào khoảng cách giữa các nút), chúng tôi sẽ thoát chức năng bằng cách quay lại sớm. Mặt khác, loại nút được nhấp sẽ được ghi vào bảng điều khiển cùng với giá trị của nóHãy chắc chắn dùng thử trước khi chuyển sang bước tiếp theo. Mở bảng điều khiển trình duyệt của bạn và nhấp vào bất kỳ nút nào. Loại và giá trị của khóa phải được ghi vào bảng điều khiển tương ứng Loại khóa chính xác được phát hiện và ghi vào bảng điều khiển Hãy thư giãn và xem mã hoàn chỉnh ở cuối bước này Nhập các chữ sốTrong bước này, chúng tôi sẽ làm cho các nút chữ số hoạt động để khi nhấp vào bất kỳ nút nào trong số chúng, giá trị tương ứng sẽ được hiển thị trên màn hình Vì thuộc tính 3 của đối tượng 2 đại diện cho đầu vào của người dùng, chúng tôi cần sửa đổi nó khi bất kỳ chữ số nào được nhấp vào. Tạo một hàm mới có tên là 1 bên dưới đối tượng 2
Tiếp theo, thay thế dòng sau trong chức năng gọi lại trình nghe sự kiện 4
với đoạn mã sau
Trong hàm 1, toán tử bậc ba ( 5) được sử dụng để kiểm tra xem giá trị hiện tại được hiển thị trên máy tính có bằng 0 không. Nếu vậy, 6 được ghi đè bằng bất kỳ chữ số nào được nhấp vào. Mặt khác, nếu 3 là một số khác 0, thì chữ số được nối vào nó thông qua phép nối chuỗiCuối cùng, hàm 8 được gọi để nội dung mới của thuộc tính 3 được phản ánh trên màn hình sau mỗi lần nhấp vào nút. Dùng thử bằng cách nhấp vào bất kỳ nút chữ số nào. Màn hình sẽ được cập nhật với bất kỳ chữ số nào bạn đã nhấpHãy thư giãn và xem mã hoàn chỉnh ở cuối bước này Nhập một dấu thập phânKhi bấm vào phím dấu thập phân, chúng ta cần thêm dấu thập phân vào bất kỳ nội dung nào được hiển thị trên màn hình trừ khi nó đã chứa dấu thập phân Đây là cách chúng ta có thể đạt được điều đó. Tạo một chức năng mới gọi là 0 bên dưới 1
Trong hàm 0, phương thức bao gồm () được sử dụng để kiểm tra xem 3 chưa chứa dấu thập phân chưa. Nếu vậy, một dấu chấm được thêm vào số. Nếu không, chức năng thoátSau đó, thay thế dòng sau trong chức năng gọi lại trình nghe sự kiện của phím 0với các dòng mã sau 1Tại thời điểm này, bạn sẽ có thể thêm đầu vào thành công một dấu thập phân và nó hiển thị trên màn hình Hãy thư giãn và xem mã hoàn chỉnh ở cuối bước này xử lý các nhà khai thácBước tiếp theo là làm cho các toán tử (+, −, ⨉, ÷, =) trên máy tính hoạt động. Có ba kịch bản để giải thích 1. Khi người dùng nhấn một toán tử sau khi nhập toán hạng đầu tiênTại thời điểm này, nội dung của 3 phải được lưu trữ trong thuộc tính 4 và thuộc tính 6 phải được cập nhật với bất kỳ toán tử nào được nhấp vàoTạo một chức năng mới gọi là 7 bên dưới 0 2Khi nhấn phím toán tử, nội dung của 3 được chuyển đổi thành số dấu phẩy động (có nghĩa là số có dấu thập phân) và kết quả được lưu trong thuộc tính 4Thuộc tính 6 cũng được đặt thành bất kỳ phím toán tử nào được nhấp trong khi 8 được đặt thành 9 cho biết rằng toán hạng đầu tiên đã được nhập và bất kỳ chữ số nào người dùng nhập tiếp theo sẽ tạo thành toán hạng thứ haiTại thời điểm này, thật hữu ích khi xem các thuộc tính của đối tượng 2 đang được cập nhật như thế nào trên mỗi lần nhấn nút. Thêm dòng sau vào cuối cả hai hàm 1 và 7 3Sau đó, thay thế dòng sau trong hàm gọi lại trình nghe sự kiện 4 của phím 4với đoạn mã sau 5Tại thời điểm này, hãy cố gắng xây dựng một phép tính số học hợp lệ bằng cách nhấp lần lượt vào các phím sau. 8. Lưu ý rằng khi nhấn phím 0, các giá trị của thuộc tính 4 và 6 được cập nhật lần lượt thành 9 và 0 trong khi 8 được đặt thành true cho biết máy tính hiện đang đợi toán hạng thứ hai được nhậpNếu bạn cố gắng nhập toán hạng thứ hai, bạn sẽ nhận thấy rằng toán hạng này được thêm vào toán hạng thứ nhất thay vì ghi đè lên toán hạng đó Hãy khắc phục điều đó bằng cách cập nhật chức năng 1 như hình bên dưới 6Nếu thuộc tính 8 được đặt thành 9, thì thuộc tính 3 được ghi đè bằng chữ số đã được nhấp. Mặt khác, kiểm tra tương tự được thực hiện như trước, ghi đè hoặc thêm vào 3 khi thích hợpHãy thư giãn và xem mã hoàn chỉnh ở cuối bước này 2. Khi người dùng nhấn một toán tử sau khi nhập toán hạng thứ haiTình huống thứ hai chúng ta cần xử lý xảy ra khi người dùng nhập toán hạng thứ hai và nhấn phím toán tử. Khi đó đã có đầy đủ các thành phần để đánh giá biểu thức nên ta cần thực hiện và hiển thị kết quả ra màn hình. 4 cũng cần được cập nhật để có thể sử dụng lại kết quả trong lần tính toán tiếp theoTạo một chức năng mới gọi là 1 bên dưới 7 như hình bên dưới 7Hàm này lấy toán hạng thứ nhất, toán hạng thứ hai và toán tử làm đối số và kiểm tra giá trị của toán tử để xác định cách đánh giá biểu thức. Nếu toán tử là 3, thì toán hạng thứ hai sẽ được trả về nguyên trạngTiếp theo, cập nhật chức năng 7 như hình bên dưới 8Khối 5 được thêm vào 7 kiểm tra xem thuộc tính 6 đã được chỉ định người điều hành chưa. Nếu vậy, hàm 1 được gọi và kết quả được lưu trong biến 9Kết quả này sau đó được hiển thị cho người dùng bằng cách cập nhật thuộc tính 3. Ngoài ra, giá trị của 4 được cập nhật vào kết quả để nó có thể được sử dụng trong máy tính tiếp theodùng thử. Nhập 02 vào máy tính và nhận thấy rằng kết quả chính xác được hiển thị trên màn hình. Nó cũng hoạt động khi bạn xâu chuỗi các hoạt động. Vì vậy, kết quả là 03 nên cho kết quả là 04Điều này là do việc nhấn phím trừ sẽ kích hoạt tính toán của phép toán đầu tiên ( 05) mà kết quả ( 06) sau đó được đặt thành 4 cho phép tính tiếp theo, vì vậy khi chúng tôi nhập 08 làm toán hạng thứ hai và nhấn phím 3, Hãy thư giãn và xem mã hoàn chỉnh ở cuối bước này 3. Khi hai hoặc nhiều toán tử được nhập liên tiếpViệc một người thay đổi suy nghĩ về loại hoạt động mà người đó muốn thực hiện là điều khá phổ biến nên máy tính phải xử lý việc này đúng cách Giả sử bạn muốn cộng bảy và hai lại với nhau, bạn sẽ nhấp vào 13 sẽ cho ra kết quả chính xác. Nhưng hãy giả sử sau khi nhấn 14, bạn đổi ý và quyết định trừ 2 từ 7. Thay vì xóa máy tính và bắt đầu lại từ đầu, bạn có thể nhấn _______4_______15 để ghi đè _______2_______0 đã nhập trước đóHãy nhớ rằng tại thời điểm nhập toán tử, 8 sẽ được đặt thành 9 vì máy tính mong đợi toán hạng thứ hai được nhập sau phím toán tử. Chúng tôi có thể sử dụng chất lượng này để cập nhật phím toán tử và ngăn mọi phép tính cho đến khi toán hạng thứ hai được nhậpSửa hàm 7 thành như thế này 9Thay đổi có liên quan được đánh dấu ở trên. Câu lệnh 20 kiểm tra xem một 6 đã tồn tại chưa và nếu 8 được đặt thành 9. Nếu vậy, giá trị của thuộc tính 6 được thay thế bằng toán tử mới và hàm sẽ thoát để không có phép tính nào được thực hiệndùng thử. Nhấp vào nhiều toán tử sau khi nhập một số chữ số và theo dõi đối tượng máy tính trong bảng điều khiển. Lưu ý rằng thuộc tính 6 được cập nhật mỗi lần và không có phép tính nào được thực hiện cho đến khi bạn cung cấp toán hạng thứ haiHãy thư giãn và xem mã hoàn chỉnh ở cuối bước này Đặt lại máy tínhNhiệm vụ cuối cùng là đảm bảo người dùng có thể đặt lại máy tính về trạng thái ban đầu bằng cách nhấn một phím. Trong hầu hết các máy tính, nút 26 được sử dụng để đặt lại máy tính về trạng thái mặc định, vì vậy đó là những gì chúng ta sẽ làm ở đâyHãy tiếp tục và tạo một chức năng mới bên dưới 1 như hình bên dưới 0Sau đó thay thế dòng sau trong chức năng gọi lại trình nghe sự kiện của phím 1với đoạn mã sau 2Hàm 28 đặt tất cả các thuộc tính của đối tượng 2 về giá trị ban đầu của chúng. Nhấp vào phím 26 trên máy tính bây giờ sẽ hoạt động như mong đợi. Bạn có thể kiểm tra đối tượng 2 trong bảng điều khiển để xác nhậnHãy thư giãn và xem mã hoàn chỉnh ở cuối bước này Sửa lỗi thập phânNếu bạn nhập một dấu thập phân sau khi bấm vào một toán tử, nó sẽ được thêm vào toán hạng đầu tiên thay vì là một phần của toán hạng thứ hai Chúng ta có thể sửa lỗi này bằng cách thực hiện sửa đổi sau đối với chức năng 0 3Nếu 8 được đặt thành 9 và dấu thập phân được nhập, thì 3 trở thành 36 và 8 được đặt thành false để mọi chữ số bổ sung được thêm vào như một phần của toán hạng thứ haiLỗi hiện đã được sửa Hãy thư giãn và xem mã hoàn chỉnh ở cuối bước này Tái cấu trúc trình nghe sự kiệnCập nhật trình xử lý sự kiện của khóa như hình bên dưới. Tất cả các khối 20 đã được thay thế bằng một khối duy nhất 39 và 8 chỉ được gọi một lần ở cuối hàm 4Bằng cách này, việc thêm các hàm mới vào máy tính sẽ dễ dàng hơn rất nhiều và bạn không cần phải gọi hàm 8 sau mỗi thao tác nữaHãy thư giãn và xem mã hoàn chỉnh ở cuối bước này Độ chính xác của dấu phẩy độngTôi muốn bạn chú ý đến một vấn đề xảy ra khi kết quả của một phép toán là một số động. Ví dụ: 42 tạo ra 43 thay vì 44 như bạn có thể mong đợiTrong các trường hợp khác, bạn nhận được kết quả mong đợi. Ví dụ: 45 mang lại 46. Một lời giải thích chi tiết về lý do tại sao điều này xảy ra có thể được tìm thấy ở đây. Hãy chắc chắn rằng bạn đọc nóMột trong những giải pháp tiềm năng cho vấn đề này được đề xuất trong trang được liên kết ở trên là định dạng kết quả thành một số vị trí thập phân cố định để các vị trí khác bị loại bỏ. Chúng ta có thể kết hợp hàm parseFloat của JavaScript với Số. toFixed để triển khai giải pháp này trong ứng dụng máy tính của chúng tôi Trong hàm 7, thay thế dòng sau 5với đoạn mã sau 6Phương thức 48 chấp nhận giá trị từ 0 đến 20 và đảm bảo rằng số chữ số sau dấu thập phân được giới hạn ở giá trị đó. Giá trị trả về có thể được làm tròn hoặc đệm bằng số 0 nếu cầnTrong ví dụ trước, 42 mang lại 43. Sử dụng 51 trên kết quả sẽ hạn chế các chữ số sau dấu thập phân thành bảy chữ số 7Những số không thừa đó không quan trọng, vì vậy chúng ta có thể sử dụng 52 để loại bỏ chúng 8Và đó là cách chúng tôi có thể khắc phục sự cố này trong ứng dụng của mình. Tôi chọn số 7 trong trường hợp này vì nó đủ chính xác cho ứng dụng máy tính này. Một lượng chính xác cao hơn có thể được yêu cầu trong các tình huống khác Là một phần thưởng bổ sung, kết quả hiện vừa vặn trên màn hình Hãy thư giãn và xem mã hoàn chỉnh ở cuối bước này Nội dung thưởngTôi đã chuẩn bị thêm một số cải tiến cho ứng dụng máy tính này cho những người ủng hộ Patreon của tôi. Các chức năng sau đã được thêm vào ứng dụng. sin, cos, tan, log, bình phương, căn bậc hai, giai thừa, phần trăm, cộng/trừ, π và ce Hỗ trợ tôi trên Patreon để mở khóa phần tiếp theo của hướng dẫn này Nếu bạn muốn có quyền truy cập vào tất cả nội dung thưởng của tôi (bao gồm cả nội dung này), hãy cân nhắc hỗ trợ Sinh viên năm nhất trên Patreon. Sự hỗ trợ của bạn sẽ giúp tôi tạo ra nhiều hướng dẫn hơn với tốc độ nhanh hơn Phần kết luậnĐiều đó kết thúc hướng dẫn của tôi, tôi hy vọng bạn đã học được nhiều điều từ nó. Vui lòng để lại nhận xét nếu một phần của bài viết không đủ rõ ràng đối với bạn và đăng ký nhận bản tin của tôi để nhận thêm các hướng dẫn tuyệt vời như hướng dẫn này trong hộp thư đến của bạn Tôi có thể tạo máy tính bằng JavaScript không?Ở đây chúng tôi đã tạo một chương trình Máy tính sử dụng ngôn ngữ JavaScript , bao gồm lập trình web HTML và CSS. Trong Máy tính này, chúng ta có thể thực hiện các phép toán cơ bản như cộng, nhân, trừ và chia. Bây giờ chúng ta thực hiện một số thao tác trong chương trình JavaScript, như hình bên dưới.
Làm cách nào để tạo một máy tính đơn giản bằng JavaScript và HTML?Các bước để tạo một máy tính đơn giản bằng HTML và JavaScript . At first Insert a Create a table using
|