沒有具體的信息,所有我真的可以認爲是以下的變化而產生的代碼:
window.alert = function(message){
console.log(message);
}
JS Fiddle demo。
這只是確保傳遞給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 Fiddle demo。不過,使用其中任何一種方法都會破壞頁面中您的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 Fiddle demo。
響應編輯從OP質疑,如下所示:
下一頁再次提交我要覆蓋以前的錯誤消息的形式。不會兩次顯示相同的消息。
有幾種方法可以做到這一點,假設您只想顯示最後一條錯誤消息,而不是附加這些錯誤消息;在第一個例子中我使用while
循環以除去output
元件的firstChild
,並且當空,追加新的錯誤消息:
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 Fiddle demo。
另一種方法是讓在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));
}
}
,你能否告訴我們處理警報的代碼的一部分? – 2012-07-05 11:02:48