Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
JavaScript中的动态变量名_Javascript_Variables - Fatal编程技术网

JavaScript中的动态变量名

JavaScript中的动态变量名,javascript,variables,Javascript,Variables,编辑:没关系。解决了这个问题。刚把height做了一个数组,并给每个id.Der命名。无论如何,谢谢你 我已经找过了,但在这件事上找不到什么。我有一个简单的脚本,当鼠标悬停在屏幕上时,它会使下拉菜单滑出动画。问题是,如果我在两个或多个菜单项之间快速来回移动,则在每次悬停开始时设置的高度变量可能会被覆盖。我有一个解决办法,可以在离开屏幕后修复它,然后在它离开屏幕时将高度重置为自动,然后再次打开,但我不会阻止它发生。通常,我会用我使用过的其他语言制作动态avariable,比如: $height =

编辑:没关系。解决了这个问题。刚把height做了一个数组,并给每个id.Der命名。无论如何,谢谢你

我已经找过了,但在这件事上找不到什么。我有一个简单的脚本,当鼠标悬停在屏幕上时,它会使下拉菜单滑出动画。问题是,如果我在两个或多个菜单项之间快速来回移动,则在每次悬停开始时设置的
高度
变量可能会被覆盖。我有一个解决办法,可以在离开屏幕后修复它,然后在它离开屏幕时将高度重置为自动,然后再次打开,但我不会阻止它发生。通常,我会用我使用过的其他语言制作动态avariable,比如:

$height = $(this).attr("id")+"height";

alert($$height);

//which would theoretically alert the height of whatever triggered it. 
在jQuery中有没有办法做到这一点,以便调用函数的每个元素都有自己的高度变量

EDIT2:既然有兴趣,我就把整个东西都贴上去

   $("#NavMenu > li").hover(
           function () {
               var height = {};
               height[$(this).attr("id")] = $(this).find("ul").css("height");
               $(this).find("ul").css("height", "0px");
               $(this).find("ul").css("left", "auto");
               $(this).find("ul").animate({ height: height[$(this).attr("id")] }, 300)
           },
            function () {
                $(this).find("ul").css("left", "-999em");
                $(this).find("ul").css(height, height[$(this).attr("id")])
            }
        )

我不知道你为什么要制定自己的滑入滑出方法

您可以使用jquery的hide()和show()方法(甚至切换),并在方法的括号内添加动画

是的,您可以这样做:

$('.obj').get(0).key = 'value';

尽管最好使用:


提示 1。您可以链接多个呼叫,如下所示:

$('.obj').css('color', 'red').data('key', 'value');
var $box = $('#box');
setTimeout(function() {
    $box.animate({ 'width': 100 }, 100);
}, 1000);
setTimeout(function() {
    $box.animate({ 'height': 200 }, 100);
}, 1000);
2。您可以将对象传递给
.css()

3.如果不更改其他CSS属性,可以使用
.width()
.height()
设置和获取元素的宽度:

HTML JavaScript 4。您可能已经注意到,在上一个示例中,我在变量中保存了对
$(“#box”)
的引用。有些情况下,您无法使用链接,例如:

$('.obj').css('color', 'red').data('key', 'value');
var $box = $('#box');
setTimeout(function() {
    $box.animate({ 'width': 100 }, 100);
}, 1000);
setTimeout(function() {
    $box.animate({ 'height': 200 }, 100);
}, 1000);

如果必须这样做,始终保存对元素的引用,这称为缓存。否则jQuery将不得不多次搜索它。

我不确定您到底想做什么?要重置菜单中所有元素的高度吗?提示:您可以执行
此操作,而不是
$(this).attr('id')
),它只是一个简单的水平下拉菜单。将鼠标移到第一个li和第二个ul上,使动画随高度下降。不喜欢隐藏/显示动画的方式。从左上到右下,即。我只做垂直运动。使内部的文本/元素在动画期间不会四处滑动。
<div id='box'></div>
#box {
    width: 200px;
    height: 100px;
}
var $box = $('#box');
// 200x100
alert( $box.width() + 'x' + $box.height() );
var $box = $('#box');
setTimeout(function() {
    $box.animate({ 'width': 100 }, 100);
}, 1000);
setTimeout(function() {
    $box.animate({ 'height': 200 }, 100);
}, 1000);