我正试图使用JavaScript根据用户PC所在的时区显示电话号码,但我遇到了麻烦。下面是我的代码:
<html>
<head>
<title>Offset Time</title>
</head>
<body onload ="timezone()">
<script type="text/javascript">
var date = new Date();
var offset = date.getTimezoneOffset();
function timezone(){
var Phone;
var div=document.getElementById('date_dependent');
if (offset = 240) {
Phone = "1-877-219-8830";
} else if (offset = 300) {
Phone = "1-866-878-7814";
} else {
Phone = "1-877-868-8121";
}
}
</script>
<div id="date_dependent"></div>
</body>
</html>
if语句出错
if (offset = 240) {
应为
if (offset == 240) {
和
else if (offset = 300)
函数定义应该是
var timezone = function(){
:
<html>
<head>
<title>Offset Time</title>
</head>
<body onload ="timezone()">
<script type="text/javascript">
var date = new Date();
var offset = date.getTimezoneOffset();
var timezone = function(){
var Phone;
var div=document.getElementById('date_dependent');
if (offset == 240) {
Phone = "1-877-219-8830";
} else if (offset == 300) {
Phone = "1-866-878-7814";
} else {
Phone = "1-877-868-8121";
}
}
</script>
<div id="date_dependent"></div>
通常,仅通过偏移量检测时区是不可靠的。这是因为许多时区共享相同的偏移量,而使用夏令时的时区将在一年中的不同时间使用不同的偏移量。您可以在时区标签wiki中阅读更多内容。
然而,有一个针对您的特定用例的解决方案。假设您在美国大陆,并且您不关心来自其他国家的客户,那么您可以测试特定的时间点,而不是当前时间。1月1日是检索标准时间偏移量的一个很好的测试值,因为它不接近任何夏令时转换。
var date = new Date(2014,0,1); // use Jan 1st, not the current date.
var offset = date.getTimezoneOffset();
var phone;
switch (offset) {
case 300:
phone = "The Eastern time zone phone number";
break;
case 240:
phone = "The Central time zone phone number";
break;
default:
phone = "The default phone number";
}
注意,如果您想将亚利桑那州与全国其他地区区分开来,因为它不使用夏令时,您将需要测试冬季偏移量(1月1日)和夏季偏移量(7月1日)。我省略了这段代码,因为它不是你最初问题的一部分。
另外,不要忘记实际使用该值!
div.innerHTML = phone;