我正在尝试将变量传递给字符串,而字符串本身被推送到现有的数组中,如下所示:
var myVar = 'slug';
myArray.push(['item one', '/path/to/' + myVar + '/']);
这根本不起作用。我可以看到正确的值被分配给myVar
;但是,数组中的myVar
甚至不被识别为变量。
这看起来很容易,但我显然错过了一些东西。
感谢您的帮助。
编辑:毕竟不是Javascript问题。
正如亚历克斯所说,这绝对通常有效。 (是的,这是一个现有的数组。)
但是,我忽略了提到push方法包含在Django模板逻辑中,只能在我的dev实例上运行,如下所示:
{% ifequal INSTANCE 'DEVELOPMENT' %]
myArray.push(['item one', '/path/to/' + myVar + '/']);
{% endifequal %}
我没有提到逻辑,因为我没有看到它是如何干扰的。我已经确认:
但是,如果我删除了那个Django逻辑,那么使用Javascript的所有内容都可以正常工作。
由于某种原因,这个服务器端逻辑阻止我将任何外部值传递到数组,客户端或服务器端。
作为一项实验,我试过了......
myArray.push(['item one', '/path/to/{{ block slug }}undefined{{ endblock }}/']);
...在儿童模板中使用以下内容。
{{ block slug }}slug{{ endblock }}
同样的事情发生了。使用模板逻辑后,值为/path/to/undefined
。没有它,根据需要,值为/path/to/slug
。
为什么发生这种情况对我来说是一个谜。我可以解决它,但如果有人有任何想法,我很乐意听到它们。
再次感谢。
Noob提问:关于改变帖子标题的礼节是什么?
答案 0 :(得分:3)
也许您打算将Array
与concat()
联系起来?目前,您正在将新Array
作为成员推送到现有Array
,从而产生多维Array
。
我还假设myArray
已指向Array
。如果没有,请执行var myArray = []
。
答案 1 :(得分:0)
您需要在使用push方法之前实例化数组:
var myVar = 'slug';
var myArray=new Array();
myArray.push(['item one', '/path/to/' + myVar + '/']);
答案 2 :(得分:0)
什么不起作用?
您正在数组中创建一个数组。
您需要访问新的数组元素,如下所示:
myArray[0][1] // this is "/paht/to/slug/
重新阅读你的评论,听起来你正试图访问数组的属性:
myArray.myVar
在javascript中,如果你想要一个命名元素,你需要使用一个对象。
myObject = {};
myObject.myVar = "/path/to/slug/";
alert(myObject.myVar) // "/path/to/slug/"
或者您可以将其作为属性直接添加到数组中:
myArray.myVar = "/path/to/slug/";
alert(myArray.myVar);