Edit in JSFiddle

<form id="form">
    <fieldset>
        <legend>Algandmed</legend>
        <label>Nimi:</label> <input name="full_name" type="text" required="required" />
        <br />
        <label>Sugu:</label> M <input value="male" name="sex" type="radio" /> N <input value="female" name="sex" type="radio" />
        <br />
        Kirjuta tänane kuupäev: <input name="today_date" type="date" />
    </fieldset>
    <fieldset>
        <legend>Elukoht</legend>
        <label>Riik:</label> <input name="country" type="text" list="autocomplete_countries" />
        <br />
        <label>Linn:</label> <input name="city" type="text" list="autocomplete_cities" />
        <datalist id="autocomplete_countries">
            <option>Eesti</option>
            <option>Soome</option>
            <option>Läti</option>
            <option>Leedu</option>
        </datalist>
        <datalist id="autocomplete_cities">
            <option>Tallinn</option>
            <option>Helsinki</option>
            <option>Riia</option>
            <option>Vilnius</option>
        </datalist>
    </fieldset>
    <fieldset>
        <legend>Programmeerimine</legend>
        <label>Olen praegu HTMLi kursuse 7. osa juures:</label> <input name="html_course_part_7" type="checkbox" checked="checked" />
        <br />
        <label>Vali oma lemmiktehiskeel:</label>
        <select name="favourite_computer_language">
            <optgroup label="Veebikeeled">
                <option>HTML</option>
                <option>CSS</option>
                <option>JavaScript</option>
            </optgroup>
            <optgroup label="Programmeerimiskeeled">
                <option>Java</option>
                <option>C#</option>
                <option>C++</option>
            </optgroup>
        </select>
    </fieldset>
    <fieldset>
        <legend>Midagi muud</legend>
        <label>Lemmikvärv:</label> <input name="favourite_color" type="color" />
        <br />
        <label>Koduleht:</label> <input name="home_page" type="url" />
    </fieldset>
    <fieldset>
        <label>Kirjutamise nurk suvaliste asjade kohta:</label>
        <br />
        <textarea name="comment" placeholder="Mida sa arvad millegist?" rows="4" cols="50"></textarea>
    </fieldset>
    <button type="button" id="submit-button">Näita minu vastuseid</button>
    <fieldset>
        <legend>Sinu Vastused</legend>
        <output id="output"></output>
    </fieldset>
</form>
/**
 * Class for getting form content
 */
class FormContent{

    /**
     * Create new form content object
     *
     * @param {HTMLFormElement} formElement Single form element
     */
    constructor(formElement){
        /**
         * Real form element
         *
         * @type {HTMLFormElement}
         */
        this.realForm = formElement;

        /**
         * Selector for elements which will be used to read and display data (like jQuery selector: # for IDs, . for classes and so on).
         * <br />
         * Separate different elements with  comas
         *
         * @type {string}
         */
        this.inputSelectors = "input, textarea, select";

        /**
         * Submit button selector (like jQuery selector: # for IDs, . for classes and so on)
         *
         * @type {string}
         */
        this.submitButtonSelector = "button[type='button']";

        /**
         * Output section selector (like jQuery selector: # for IDs, . for classes and so on)
         * <br />
         * Separate different elements with  comas
         *
         * @type {string}
         */
        this.outputSelector = "output";

        /**
         * Disabled types for input element.
         *
         * @type {Array}
         */
        this.disabledTypes = ["button", "reset", "submit"];


        /**
         * Input elements node list (created by inputSelectors)
         *
         * @see inputSelectors
         * @type {NodeList}
         */
        var inputElements = formElement.querySelectorAll(this.inputSelectors);

        /**
         * Get input elements
         *
         * @see inputElements
         */
        this.getInputElements = function(){ return inputElements };

        /**
         * Submit button
         *
         * @see submitButtonSelector
         * @type {Element}
         */
        var submitButton = formElement.querySelector(this.submitButtonSelector);

        /**
         * Get submit button
         *
         * @see submitButton
         */
        this.getSubmitButton = function(){ return submitButton };

        /**
         * Output sections (where the form data is displayed)
         *
         * @see outputSelector
         * @type {Element}
         */
        var outputSections = formElement.querySelectorAll(this.outputSelector);

        /**
         * Get output sections
         *
         * @see outputSections
         */
        this.getOutputSections = function(){ return outputSections };


        /**
         * Empty input's alternative (print) value
         *
         * @type {string}
         */
        this.emptyValueMessage = "Unknown";

        /**
         * Error message (when there is empty required fields)
         *
         * @type {string}
         */
        this.errorMessage = "<h4 style='color:#FF0000;'>Please fill all the required inputs!</h4>";

        /**
         * Instance for this class
         *
         * @type {FormContent}
         */
        var thisInstance = this;


        if(submitButton && outputSections){
            submitButton.onclick = function(){
                thisInstance.onSubmitButtonClick();
            };
        }
    }

    /**
     * When submit button is clicked
     */
    onSubmitButtonClick(){
        var outputMessage = (this.areRequiredInputsFilled()) ? this.getFormattedFormContent() : this.errorMessage;

        this.printToOutput(outputMessage);
    }

    /**
     * Are all the required inputs/fields filled
     *
     * @return {boolean}
     */
    areRequiredInputsFilled(){
        for(var node of this.getInputElements()){
            if(node.required && !node.value){
                return false;
            }
        }

        return true;
    }

    /**
     * Print/display form data to output element
     *
     * @see  getOutputSections
     */
    printToOutput(content){
        for(var output of this.getOutputSections()){
            output.innerHTML = content;
        }
    }

    /**
     * Get form content/data which is checked and formatted
     *
     * @return {string} Form content
     */
    getFormattedFormContent(){
        var formContent = "";

        var formInputsWithValue = this.getFormInputsWithValue();

        var noNameCounter = 0;

        for(var input of formInputsWithValue){
            var printValue = input.data || input.value || this.emptyValueMessage;
            var printName = input.name || "no_name_element_" + noNameCounter;

            if(!input.name){
                noNameCounter++;
            }

            formContent += "<b>" + printName + "</b>: " + printValue + "<br />";
        }

        return formContent;
    }

    /**
     * Get all the inputs with value inside the form
     * 
     * @see getInputElements()
     * @return {Array} Inputs with value
     */
    getFormInputsWithValue(){
        var inputsWithValue = [];

        for(var input of this.getInputElements()){
            if(!this.disabledTypes.includes(input)){
                if(input.type === "radio"){
                    if(input.checked){
                        inputsWithValue.push(input);
                    }
                }else if(input.type === "checkbox"){
                    input.value = (input.checked) ? true : false;
                    inputsWithValue.push(input);
                }else if(input.multiple){
                    inputsWithValue.push(this.getMultipleInputElement(input));
                }else if(input.value || input.innerHTML){
                    inputsWithValue.push(input);
                }else{
                    inputsWithValue.push(input);
                }
            }
        }

        return inputsWithValue;
    }

    /**
     * Get input which has attribute multiple
     *
     * @param {HTMLInputElement} multipleInput Input with attribute multiple
     *
     * @return {HTMLInputElement} Input instance
     */
    getMultipleInputElement(multipleInput){
        var inputInstance = document.createElement("input");
        inputInstance.name = multipleInput.name;

        var values = [];

        if(multipleInput.type !== "file"){
            for(var option of multipleInput){
                if(option.selected){
                    values.push(option.value);
                }
            }
        }else{
            for(var file of multipleInput.files){
                values.push(file.name);
            }
        }

        inputInstance.data = values.toString();

        return inputInstance;
    }
}

var forms = document.getElementsByTagName("form");

for(var form of forms){
    new FormContent(form);
}