This article will guide you on how to create a simple random book recommender using JavaScript. By clicking the button, the page will randomly display different book cover images. Based on the existing random quote generator code, we will transform it into a random book recommender and avoid recommending the same book repeatedly.
HTML structure
First, we need to create an HTML structure to display the book cover and a button that users can click to get new book recommendations.
<div class="books"> <h1 class="book-generator">Random book recommendations</h1> <div id="bookDisplay"> <img src="/static/imghw/default1.png" data-src="./js/books.js" class="lazy" id="bookCover" style="max-width:90%" alt="Book Cover"> </div> <button onclick="newBook()" class="button-book">Recommend a new book</button> <script></script> </div>
In this HTML structure, we create a div container that contains a title h1, an img tag to display the book cover, and a button button. The id of the img tag is set to bookCover, which is used to reference and update the image in JavaScript code. The style attribute is used to set the initial width of the image, and the alt attribute is used to display alternative text when the image cannot be loaded.
JavaScript code
Next, we need to write JavaScript code to implement the logic of random book recommendations.
var images = [ 'https://m.media-amazon.com/images/I/81jRqrKKObL._AC_UL800_FMwebp_QL65_.jpg', 'https://m.media-amazon.com/images/I/81JgX8VgZiL._AC_UL800_FMwebp_QL65_.jpg', 'https://m.media-amazon.com/images/I/71CBWHK035L._AC_UL800_FMwebp_QL65_.jpg', 'https://m.media-amazon.com/images/I/91pXKpUfGgL._AC_UL800_FMwebp_QL65_.jpg', ]; let lastBook = -1; // this is to prevent offering the same book twice function newBook() { let randomNumber; do { randomNumber = Math.floor(Math.random() * (images.length)); } while (randomNumber === lastBook); lastBook = randomNumber; document.getElementById('bookCover').src = images[randomNumber]; }
This JavaScript code first defines an images array, which contains the URL of the book cover image. Then, a lastBook variable is defined to record the index of the last recommended book to prevent repeated recommendations.
The newBook ??function is where the core logic lies. It first generates a random number randomNumber, and then uses a do...while loop to ensure that the newly generated random number is different from the index of the last recommended book. If the same, random numbers are regenerated until a different index is found. Finally, update the lastBook variable and set the src attribute of the bookCover element to the URL of the new book cover image.
Code explanation
- images array : stores the URL address of the book cover image. You can add or modify these URLs as needed.
- lastBook variable : initialized to -1, indicating that no books have been recommended yet.
- newBook ??function :
- Use Math.random() and Math.floor() to generate a random integer as the index of the images array.
- Use a do...while loop to ensure that the generated random number is different from lastBook to prevent repeated recommendations.
- Update the value of lastBook to the index of the currently recommended book.
- Update the book cover image by getting the img element using document.getElementById('bookCover') and setting its src attribute to images[randomNumber].
Things to note
- Make sure the books.js file is properly linked into the HTML file.
- You can adjust the size and style of your book cover image as needed.
- This code can be extended, for example by adding information such as the book's title, author, etc.
- For a better user experience, consider showing a loading animation when loading images.
- If you need to dynamically obtain book information from the server, you can use AJAX technology.
Summarize
Through the above steps, we successfully created a simple random book recommender. This recommender can randomly display different book cover images and avoid recommending the same book repeatedly. You can modify and expand it according to your own needs, such as adding more book information, using different image sources, etc. This project can be used as an introductory exercise in learning JavaScript and front-end development, helping you better understand concepts such as DOM manipulation, event handling, and random number generation.
The above is the detailed content of Random book recommender: implemented using JavaScript. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

ArtGPT
AI image generator for creative art from text prompts.

Stock Market GPT
AI powered investment research for smarter decisions

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

This article will introduce how to use JavaScript to achieve the effect of clicking on images. The core idea is to use HTML5's data-* attribute to store the alternate image path, and listen to click events through JavaScript, dynamically switch the src attributes, thereby realizing image switching. This article will provide detailed code examples and explanations to help you understand and master this commonly used interactive effect.

First, check whether the browser supports GeolocationAPI. If supported, call getCurrentPosition() to get the user's current location coordinates, and obtain the latitude and longitude values ??through successful callbacks. At the same time, provide error callback handling exceptions such as denial permission, unavailability of location or timeout. You can also pass in configuration options to enable high precision, set the timeout time and cache validity period. The entire process requires user authorization and corresponding error handling.

To create a repetition interval in JavaScript, you need to use the setInterval() function, which will repeatedly execute functions or code blocks at specified milliseconds intervals. For example, setInterval(()=>{console.log("Execute every 2 seconds");},2000) will output a message every 2 seconds until it is cleared by clearInterval(intervalId). It can be used in actual applications to update clocks, poll servers, etc., but pay attention to the minimum delay limit and the impact of function execution time, and clear the interval in time when no longer needed to avoid memory leakage. Especially before component uninstallation or page closing, ensure that

Nuxt3's Composition API core usage includes: 1. definePageMeta is used to define page meta information, such as title, layout and middleware, which need to be called directly in it and cannot be placed in conditional statements; 2. useHead is used to manage page header tags, supports static and responsive updates, and needs to cooperate with definePageMeta to achieve SEO optimization; 3. useAsyncData is used to securely obtain asynchronous data, automatically handle loading and error status, and supports server and client data acquisition control; 4. useFetch is an encapsulation of useAsyncData and $fetch, which automatically infers the request key to avoid duplicate requests

Use the writeText method of ClipboardAPI to copy text to the clipboard, it needs to be called in security context and user interaction, supports modern browsers, and the old version can be downgraded with execCommand.

TheBestAtOrreatEamulti-LinestringinjavascriptSisingStisingTemplatalalswithbacktTicks, whichpreserveTicks, WhichpreserveReKeAndEExactlyAswritten.

AnIIFE(ImmediatelyInvokedFunctionExpression)isafunctionthatrunsassoonasitisdefined,createdbywrappingafunctioninparenthesesandimmediatelyinvokingit,whichpreventsglobalnamespacepollutionandenablesprivatescopethroughclosure;itiswrittenas(function(){/cod

To parse JSON strings into JavaScript objects, you should use the JSON.parse() method, which can convert valid JSON strings into corresponding JavaScript objects, supports parsing nested objects and arrays, but will throw an error for invalid JSON. Therefore, you need to use try...catch to handle exceptions. At the same time, you can convert the value during parsing through the reviver function of the second parameter, such as converting the date string into a Date object, thereby achieving safe and reliable data conversion.
