2013-01-19 31 views
0

動態單詞,這行代碼更換使用JavaScript

$("body").html($("body").html().replace(/1800/g,'6:00pm')); 

我可以代替這個詞,但我怎樣才能讓它在這個腳本更加動態?

var getFormattedTime = function (fourDigitTime){ 
    var hours24 = parseInt(fourDigitTime.substring(0,2)); 
    var hours = ((hours24 + 11) % 12) + 1; 
    var amPm = hours24 > 11 ? 'pm' : 'am'; 
    var minutes = fourDigitTime.substring(2); 

    return hours + ':' + minutes + amPm; 
}; 

我的HTML代碼如

Your class will start at 1900, please be there by 1845. 

哪會算

Your class will start at 07:00pm, please be there by 06:45pm. 

我嘗試這樣做:

$("body").html($("body").html().replace(fourDigitTime, getFormattedTime(fourDigitTime))); 

var fourDigitTime = document.getElementById('fourDigitTime').value; 

var getFormattedTime = function (fourDigitTime){ 
var hours24 = parseInt(fourDigitTime.substring(0,2)); 
var hours = ((hours24 + 11) % 12) + 1; 
var amPm = hours24 > 11 ? 'pm' : 'am'; 
var minutes = fourDigitTime.substring(2); 

return hours + ':' + minutes + amPm; 
}; 

它不工作..

+0

你現在是否收到錯誤? – doniyor

+0

你在哪裏使用getFormattedTime函數? – Wolf

+0

這兩個代碼是分開的,如果時間是1500,我希望能夠將時間更改爲下午3點。或者其他任何轉換時間。 –

回答

1

[編輯EmersonF清零後了該所有四個字母的時候應該更換]

您可以使用一個函數作爲第二個參數來代替:

function formatTime(str, p1) { 
    // do something with p1 
    return // the formated time 
} 

$("body").html($("body").html().replace(/(\d?\d\d\d)/g, formatTime)); 

字符串的一部分是「捕獲的」利用在 則表達式中的括號交給功能作爲第二個參數(這裏稱爲P1)

用於工作實施例參見http://jsfiddle.net/bjelline/pb8d2/

注意:正則表達式不能告訴2015年除了從下午8點的quater 以外,並且會將該年轉換爲一次!

+0

我的頁面實際上包含許多4位數字,我需要在需要時更改。不只是一個事件。感謝您的幫助:) –

+0

所以您的問題實際上是「我如何用am/pm格式化的時間來替換頁面中四位數時間的每一次出現?」 – bjelli

+0

是的,並且替換每一次出現的任何類型的4位數時間。我看到的小提琴只能在1800上工作,而不是其他任何數字。 –

0

您可以使用此:

var time = "1500"; 

$("body").html($("body").html().replace(time, getFormattedTime(time))); 

replace()不必總是regex