具体的な情報がなければ、私が実際に提案できるのは、次のバリエーションだけです。
window.alert = function(message){
console.log(message);
}
JS フィドルのデモ。
これにより、渡されたすべてのメッセージがalert()
、代わりにconsole.log()
.
代わりに、メッセージを特定の要素に向けることができます。
window.alert = function(message) {
var output = document.getElementById('output'),
newTextContainer = document.createElement('p'),
text = document.createTextNode(message);
newTextContainer.appendChild(text);
output.appendChild(newTextContainer);
}
JS フィドルのデモ。
ただし、これらのいずれかを使用するとalert()
、ページでの関数の使用が中断されます。したがって、代わりに、後者の例 (すぐ上) を使用して新しい関数を作成し、その関数を上書きするのではなく呼び出すことをお勧めしますalert()
。
アラートを処理するカスタム関数の作成、および新しい「アラート」を追加する特定の要素の指定に関しては、次のようになります。
function newAlert(message, elem) {
// message is a string containing the message to display.
// elem is the id of the element into which the message should be displayed,
// defaults to an id of 'output' if no element is specified.
var output = elem ? document.getElementById(elem) : document.getElementById('output'),
newTextContainer = document.createElement('p'),
text = document.createTextNode(message);
newTextContainer.appendChild(text);
output.appendChild(newTextContainer);
}
JS フィドルのデモ。
以下、OP からの質問に応じて編集されました。
次に、以前のエラー メッセージを上書きしたいフォームを再度送信します。同じメッセージを 2 回表示しない。
これらのエラー メッセージを追加するのではなく、最後のエラー メッセージのみを表示したい場合、これを行うにはいくつかの方法があります。最初の例では、while
ループを使用しfirstChild
てoutput
要素の を削除し、空の場合は新しいエラー メッセージを追加しています。
function newAlert(message, elem) {
var output = elem ? document.getElementById(elem) : document.getElementById('output'),
newTextContainer = document.createElement('p'),
text = document.createTextNode(message);
while (output.firstChild){
output.removeChild(output.firstChild);
}
newTextContainer.appendChild(text);
output.appendChild(newTextContainer);
}
JS フィドルのデモ。
別の方法として、要素の最初の段落要素への参照を取得しoutput
(存在する場合は作成し、存在しない場合は作成します)、その要素のテキストを単純に上書きします。
function newAlert(message, elem) {
var output = elem ? document.getElementById(elem) : document.getElementById('output'),
textContainer = output.getElementsByTagName('p')[0] || output.appendChild(document.createElement('p'));
if (textContainer.firstChild){
textContainer
.firstChild
.nodeValue == message;
}
else {
textContainer
.appendChild(document
.createTextNode(message));
}
}