Это очень странный способ написания кода, но все, что плавает на вашей лодке. Я не буду пытаться изменить весь ваш код, так как это не является частью вопроса.
Поскольку время на интервалах одинаково, вы можете использовать только один, чтобы сделать то, что вы хотите:
<html>
<head></head>
<body>
<p style="font-size: 20px; font-family: SF Compact Display;">In your region:</p>
<script type="text/javascript">
document.write ('<p><span id="date-time">', new Date().toLocaleString(), '<\/span><\/p>')
</script>
<p style="font-size: 20px; font-family: SF Compact Display;">In Japan:</p>
<script type="text/javascript">
var asiaTime = new Date().toLocaleString("en-US", {timeZone: "Asia/Tokyo"});
asiaTime = new Date(asiaTime);
var options = {dateStyle: 'medium', hour:'numeric', minute:'numeric', second:'numeric'}
console.log('Asia time: '+asiaTime.toLocaleString(options))
document.write ('<p><span id="japantime">', asiaTime, '<\/span><\/p>')
if (document.getElementById) onload = function() {
setInterval(function () {
var asiaTime = new Date().toLocaleString("en-US", {timeZone: "Asia/Tokyo"});
document.getElementById ('date-time').firstChild.data = new Date().toLocaleString();
document.getElementById('japantime').firstChild.data = asiaTime
}, 50)
}
</script>
</body>
</html>
Ваша функция japantime нигде не использовалась, поэтому я удалил ее. Я также думаю, что у вас был какой-то оставшийся код от нескольких вещей. Я попытался привести его в порядок.
Проверьте, соответствует ли результат тому, чего вы добились, но он выглядит так, как вы хотите.
Что касается запуска нескольких интервалов одновременно, я предлагаюВы посмотрите на этот ответ, объясняя, как работают таймеры в JS. На этой странице также есть несколько ссылок с дополнительной информацией:
Время в JS - несколько setIntervals, запущенных одновременно и начинающихся одновременно?