Skip to content

Instantly share code, notes, and snippets.

@marsicdev
Created October 26, 2017 15:01
Show Gist options
  • Save marsicdev/b843579633e03414a0700183994687ce to your computer and use it in GitHub Desktop.
Save marsicdev/b843579633e03414a0700183994687ce to your computer and use it in GitHub Desktop.
Movie form example
function Movie(title, length, genre) {
this.title = title;
this.length = length;
this.genre = genre;
}
Movie.prototype.getInfo = function () {
return this.title + ", " + this.genre;
};
// Array to store all our movies
var movies = [];
function createMovie() {
// Get references to elements
var titleElement = document.getElementById("movie-title");
var lengthElement = document.getElementById("movie-length");
var genreSelectElement = document.getElementById("genre-select");
var genreOptionElement = genreSelectElement[genreSelectElement.selectedIndex];
var movieListElement = document.getElementById("movie-list");
var errorElement = document.getElementById("error");
// Get element values
var title = titleElement.value;
var length = lengthElement.value;
var genre = genreOptionElement.value;
// Validate form
var isInvalidForm = !title || !length || (genre === "none");
if (isInvalidForm) {
errorElement.textContent = "Error";
return;
}
// Reset error if any
errorElement.textContent = "";
// Create movie object
var movie = new Movie(title, length, genre);
// Add movie to list of movies
movies.push(movie);
//
movieListElement.innerHTML = createListHTML(movies);
titleElement.value = "";
lengthElement.value = "";
}
function createListHTML(array) {
// Building our HTML starting with
// open <ul> tag
var movieListHTML = "<ul>";
// Iterate array and for each element create
// new <li> element and append to string
for (var i = 0; i < array.length; i++) {
var film = array[i];
movieListHTML += "<li>" + film.getInfo() + "</li>"
}
// Finish list by closed </ul>
movieListHTML += "</ul>"
// Return formated html string
return movieListHTML;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Movie list</title>
<link rel="stylesheet" href="./main.css">
<script src="./entities.js"></script>
<script src="./form.js"></script>
</head>
<body>
<h1>Movie list</h1>
<form>
<input type="text" id="movie-title" value="" placeholder="Title">
<input type="number" id="movie-length" value="" placeholder="Length">
<select name="genre-select" id="genre-select">
<option value="none">-</option>
<option value="action">action</option>
<option value="drama">drama</option>
<option value="commedy">commedy</option>
</select>
<div id="error"></div>
<input type="button" onclick="createMovie()" value="Create movie">
<hr>
<div id="movie-list"></div>
</form>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment