Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML选择-Javascript“;这是“价值观”;无效的_Javascript_Jquery_Html - Fatal编程技术网

HTML选择-Javascript“;这是“价值观”;无效的

HTML选择-Javascript“;这是“价值观”;无效的,javascript,jquery,html,Javascript,Jquery,Html,我刚刚发了一篇关于这个的帖子,我想我已经让它工作了,但现在我遇到了另一个问题 我有一段Javascript代码: function slideTo(target){ var targetPosition = $(target).offset().top; $('html,body').animate({ scrollTop: targetPosition}, 'slow'); } </script> 请帮忙。 此外,如果这是一个重复的对不起。我快速看了一眼,看不到任

我刚刚发了一篇关于这个的帖子,我想我已经让它工作了,但现在我遇到了另一个问题

我有一段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>

空白的
TestPi
班纳皮
鸡派

这解决了我的问题。:)

由于您正在传递特定选项元素的
,因此您可以从以下位置更改选择器:

var targetPosition = $(target).offset().top;
为此:

var targetPosition = $('option[value=' + target + ']').offset().top;

我假设您希望通过元素的ID获取元素,在您的示例中,您缺少
。。所以您应该执行
var targetPosition=$(“#”+jQuery(this.val()).offset().top。您不需要将值作为参数传递,因为您可以使用
jQuery(this).val()
@Mindastic从函数内部获取该值。当您使用
onchange=slideTo()
调用函数时,元素不会作为
this
传递。是的,您是对的@Barmar。我在考虑用jQuery绑定事件处理程序。我将编辑我的答案。谢谢你指出。好吧,我现在无法编辑评论:(@Mindastic为什么你不发布一个实际的答案?当脚本中的一个简单更改可以为你处理时,为什么你会这样做。改为
var targetPosition=$(“#”+target).offset()。top;
var targetPosition = $(target).offset().top;
var targetPosition = $('option[value=' + target + ']').offset().top;