gpt4 book ai didi

javascript - javascript/jquery "hate"负数是否作为 id 名称的一部分?

转载 作者:行者123 更新时间:2023-12-01 02:13:39 25 4
gpt4 key购买 nike

我有一段 JQuery 代码,可以进行一些栏滚动。

由于我有三个、四个、...n 栏可以滑入我的 PHP 页面,因此我为它们分配一个动态 id 并将其传递给 JQuery 以确保确定我的代码片段在 mouseOver 事件上滑动正确的栏。

这是对我的卷轴进行“初始化”的代码片段

(function($){
$.fn.horizontalScroll = function(options) {

var rid = arguments[0];
var oid = arguments[1];

var defaults = { };

var options = $.extend(defaults, options);

return this.each(function() {

var horiz_scroll = new dw_scrollObj($(this).attr('id'), $(this).children().attr('id'), $(this).children().children().attr('id'));
horiz_scroll.setUpScrollbar("dragBar_"+rid+"_offer_"+oid, "track_"+rid+"_offer_"+oid, "h", 1, 1);
horiz_scroll.setUpScrollControls('scrollbar_'+rid+'_offer_'+oid);

如您所见,"dragBar_"+rid+"_offer_"+oid 将我的 id 动态连接到其他字符串部分。

很好,一切都很顺利,除非我的 oid 变成了类似 -1

在这种情况下,我会收到一个错误,提示

identifier starts immediately after numeric literal

这让我很困惑,因为我在 StackOverflow 上读到了一些问题,例如 this (只是一个随机的),我期望涉及数字的所有串联行为。

所有“中断”的代码片段

this.timerId = setInterval(this.animString + ".scroll()", 10);

其中 this.animString"dw_scrollObj.col.horiz_container_outer_55_offer_-1" 而在其他情况下(有效)为 "dw_scrollObj.col.horiz_container_outer_62_offer_234 “

谁能解释一下为什么会发生这种情况?

最佳答案

您正在尝试访问名为dw_scrollObj.col.horiz_container_outer_55_offer_-1的全局变量。有些浏览器会让所有元素都可以通过其 ID 进行访问,但不建议这样做。

它在您的具体情况下不起作用的原因是您编写的内容不是有效的 JavaScript 变量名称。您尝试访问变量将被解释为

dw_scrollObj.col.horiz_container_outer_55_offer_ - 1

如果您想通过以下方式访问您的对象

document.getElementById('dw_scrollObj.col.horiz_container_outer_55_offer_-1')

$('#dw_scrollObj.col.horiz_container_outer_55_offer_-1')

你不会遇到同样的问题。

对于您的 setInterval 代码,这意味着

this.timerId = setInterval("$('#" + this.animString + "').scroll()", 10);

或者最好

this.timerId = setInterval(function() {
$('#' + this.animString).scroll();
}, 10);

如果您的代码处于循环中,其中 animString 将随时间而变化,在上下文中,您将需要创建一个新的闭包:

this.timerId = setInterval((function(x) {
return function() {
$('#'+x).scroll();
};
})(this.animString), 10);

关于javascript - javascript/jquery "hate"负数是否作为 id 名称的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10210067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com