我刚刚发了一篇关于此的帖子,我认为我已经开始工作,但现在我遇到了另一个问题。
我有这个Javascript片段:
function slideTo(target){
var targetPosition = $(target).offset().top;
$('html,body').animate({ scrollTop: targetPosition}, 'slow');
}
</script>
然后我的页面会更进一步。
<select onChange="slideTo(this.value)">
<option value="blank">blank</option>
<option value="test">TestPi</option>
<option value="banana">BananaPie</option>
<option value="chicken">ChickenPie</option>
</select>
我在Firefox中打开了我的控制台,当我点击某个选项时,它就是这个错误。
TypeError: $(...).offset(...) is null
请帮忙。 此外,对不起,如果这是重复。我快速看了一下,看不出任何看似相关的东西,但这可能只是我的措辞。
答案 0 :(得分:0)
没关系,我是个白痴。
我需要在所有值的开头添加#。
<select onChange="slideTo(this.value)">
<option value="#blank">blank</option>
<option value="#test">TestPi</option>
<option value="#banana">BananaPie</option>
<option value="#chicken">ChickenPie</option>
</select>
这解决了我的问题。 :)
答案 1 :(得分:0)
由于您传递了特定选项元素的value
,因此您可以更改选择器:
var targetPosition = $(target).offset().top;
对此:
var targetPosition = $('option[value=' + target + ']').offset().top;