InnerHTML附加项而不是替换

时间:2015-03-12 15:59:49

标签: javascript

我正在尝试制作一个回文剧本,它实际上是“正常工作”。 我想做出改进。我希望输入值附加在我的“输出”div上。

这是我的小提琴http://jsfiddle.net/vitorboccio/8yh1u0t7/

任何提示?我不想使用Jquery!谢谢!

(function () {
"use strict";

var output = document.getElementById("output"),
    statusLine = document.getElementById("status"),
    phrase = document.getElementById('phrase'),
    testButton = document.getElementById("testButton"),
    //palindromeText = document.getElementById("palindrome"),
    characterCheck = document.getElementById("characterCheck"),
    ignoreSpecialCharacters = false,
    ignoreSpaces = false;

function setMessage(palindrome) {
    if (palindrome) {
        output.innerHTML = phrase.value + ' ' + "é palindroma";
    } else {
        output.innerHTML = phrase.value + ' ' + "não é a palindroma";
    }
}

function checkForPalindrome(string) {
    var palindrome = true,
        right = string.length - 1,
        left = 0;

    if (!string || string.length < 1) {
        // 0 characters
        return false;
    }

    while (left < right && palindrome) {
        palindrome = string.charAt(left) === string.charAt(right);
        left++;
        right--;
    }

    return palindrome;
}

function executeTest() {
    var string = phrase.value,
        cleanString;

    cleanString = string;

    if (ignoreSpaces) {
        //ignores whitespaces only;
        cleanString = string.replace(/\s+/g, '');
    }

    if (ignoreSpecialCharacters) {
        //ignores punctuation and white space (controversial).
        cleanString = string.replace(/[A-Z0-9]/ig, '');
    }

    if (checkForPalindrome(cleanString)) {
        setMessage(true);
        palindromeText.innerHTML = '"' + string + '"';
    } else {
        setMessage(false);
    }
}

function executeOnEnter(e) {
    if (e.keyCode === 13) {
        executeTest();
//            phrase.blur();
    }
}

//resets the form to state 1
function resetForm() {
    output.innerHTML = "";
    //statusLine.innerHTML = "Waiting";
    statusLine.style.color = "green";
    phrase.value = "";
}

function charIgnoreChanged(e) {
    ignoreSpecialCharacters = e.target.checked;
}

function spaceIgnoreChanged(e) {
    ignoreSpaces = e.target.checked;
}

phrase.addEventListener('keydown', executeOnEnter);
testButton.addEventListener('click', executeTest);
characterCheck.addEventListener('change', charIgnoreChanged);
spaceCheck.addEventListener('change', spaceIgnoreChanged);

}());

2 个答案:

答案 0 :(得分:1)

您可以通过保留原始innerHTML来附加到div:

output.innerHTML = output.innerHTML + "<br />" + phrase.value + ' ' + "é palindroma";

或更短:

output.innerHTML += "<br />" + phrase.value + ' ' + "é palindroma";

答案 1 :(得分:1)

您只需修改setMessage

即可
 function setMessage(palindrome) {
    if (palindrome) {
        output.innerHTML += phrase.value + ' ' + "é palindroma<br />";
    } else {
        output.innerHTML += phrase.value + ' ' + "não é a palindroma<br />";
    }
    // for user convenience, clear the textbox and give it focus 
    phrase.value = '';
    phrase.focus();
 }

Fiddle