用JavaScript动态替换单词

时间:2013-01-19 08:33:50

标签: javascript jquery

使用这行代码

$("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;
};

它不起作用..

2 个答案:

答案 0 :(得分: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点,并将把这一年转换成一个时间!

答案 1 :(得分:0)

您可以使用:

var time = "1500";

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

replace()无需始终regex