此代码正在读取数组名称的第一个字母,但我希望它读取该数组中的第一个对象。 它应该读取一个元素数组属性(它做)然后访问该数组中的第一个东西。 这是我第一次使用数组,所以这可能是一个非常愚蠢的问题:)
谢谢你。
//array of strategies
//leads
var leads = new Array();
leads[0] = "Test 1";
leads[1] = "Test 2";
leads[2] = "Test 3";
$("button").click(function () {
//get category
var currentCat = $(this).attr("array");
$("#danWell h1").text($(this).attr('id')); //don't worry about this line
$("#danWellContent").text(currentCat[0]);
})
答案 0 :(得分:1)
看起来您希望将数组存储为元素的属性之一。我建议您使用.data()
而不是属性来读取和写入数组值。这可以防止您添加多余的属性,并允许您使用正确的类型检索数据。
存储数组($ele
引用jQuery元素):
var array = [];
array[0] = "Test";
array[1] = "Test";
$ele.data("array", array);
要检索数组:
var array = $ele.data("array");
如果您将数组存储为元素的data-array
属性,则上面的.data()
调用的工作方式完全相同。
答案 1 :(得分:1)
我猜你的问题是你有一个从属性中检索到的字符串,并且你想要使用该名称访问javascript中的变量。这通常通过使用object[varName]
来完成,其中varName
是一个javascript变量,这使您可以访问该变量中名称帮助对象的属性。
如果要访问的变量是全局变量,则可以通过索引window
对象来通过字符串访问它,因为所有全局变量都是window
对象的属性:
var currentCat = $(this).attr("array");
var item = window[currentCat][0];
如果您要访问的变量不是全局变量,那么您需要将其作为某个已知对象的属性,以便您可以使用相同的技术。
var myObject = {};
myObject.leads = [];
myObject.leads[0] = "Test 1";
myObject.leads[1] = "Test 2";
myObject.leads[2] = "Test 3";
var currentCat = $(this).attr("array");
var item = myObject[currentCat][0];
仅供参考,在HTML中存储自定义属性的推荐方法是使用"data-"
为自定义属性添加前缀,然后您可以使用jQuery的.data()
来检索自定义属性,并且您还可以兼容自定义属性的HTML5规范。
<div data-array="leads">
var currentCat = $(this).data("array");