javascript语法问题

时间:2010-01-23 06:06:31

标签: javascript

我的文件负责人:

<script type="text/javascript">

            var myString= location.href;
            var mySplit = myString.split("#");
            var x = mySplit[1];

            if (x == 'page1_div1') {
                document.getElementById('div1').className = 'theNewClass';
            }
</script>

我的错误是什么? 谢谢, 琳达

2 个答案:

答案 0 :(得分:3)

如果您在文档的head中包含该代码,问题是document.getElementById无法找到您的"div1"元素,因为在执行时,您的文档的body尚未评估,请尝试使用window.onload事件:

window.onload = function () {
  var x = location.hash.substring(1);

  if (x == 'page1_div1') {
    document.getElementById('div1').className = 'theNewClass';
  }
};

请注意,我还简化了您的代码,您想要提取当前网址的hash部分。

答案 1 :(得分:0)

您可以通过location.hash更轻松地获取哈希,因为您可能会有几个div,所以更容易打开它们。例如:

<script type="text/javascript">
  var myHash = location.hash || 'NO-HASH';

  switch (myHash) {
    case 'NO-HASH':
      // Original page - no hash.
      document.getElementById('div1').className = 'theOldClass';
      document.getElementById('div2').className = 'theOldClass';
      break;
    case '#page1_div1':
      document.getElementById('div1').className = 'theNewClass';
      document.getElementById('div2').className = 'theOldClass';
      break;
    case '#page1_div2':
      document.getElementById('div1').className = 'theOldClass';
      document.getElementById('div2').className = 'theNewClass';
      break;
  }
</script>

但是,如果这与您的历史记录跟踪问题有关,则您需要在轮询计时器中运行此代码。