我正在尝试在我的页面上运行幻灯片,该幻灯片来自多个图像组(类别),如果选中了页面上的特定复选框(每个类别一个),则会在幻灯片中显示。我成功地将其编码为两个类别,但我正在尝试使代码更容易定制。我有一个绝妙的想法,使用自定义对象而不是数组。我认为这种方法可能会让我更接近我在此过程中使用xml文档的最终目标。
我是面向对象编程的新手,特别是使用javascript。我已成功创建了一个在幻灯片页面中使用的对象声明,其中包含以下代码:
function picsobj(description,length,indivpicarray){
this.description=description;
this.length=length;
this.indivpicarray=indivpicarray;
}
和其他地方用以下代码来制作一个picsobj对象数组
for(i=0;i<2;i++){ //change i< integer to number of picture arrays
picarrays[i]=new picsobj();}
计划是使用描述属性作为标题或描述页面上的元素,使用length属性来帮助确定要循环的图片数量,并使用(这里是我的问题所在......)对象属性名为indivpicarray,用于存储图像名称的ARRAY(数组的长度将从picsobj更改为picsobj)。我不知道这是否可行,如果是,我需要语法方面的帮助。感谢您阅读我的问题。再次,对不起,如果有任何误用的话,我有点像n00b,并通过“查看源代码,复制,粘贴,更改”了解了很多
答案 0 :(得分:3)
并使用被调用的对象属性 indivpicarray存储ARRAY 图像名称。
这很好。具有数组属性的对象技术非常常见。像任何其他变量一样处理数组。只需将其添加到构造函数中:
function picsobj(description,length,indivpicarray){
this.description=description;
this.length=length;
this.indivpicarray=indivpicarray;
}
imageNameArray = [ "image1.png", "image2.gif", "image3.jpg" ];
var myPicsObj = new picsobj( "this is the description", 3, imageNameArray );
答案 1 :(得分:0)
在javascript中一切皆有可能:
this.description = ["a","b","c"];
你有3个项目的数组作为字符串。在现实世界中,您将其定义为this.description = [];
然后做一些事情:
picarrays[i].description.push("a");
picarrays[i].description.push("b");
picarrays[i].description.push("c");
为您提供有效的相同数组,您可以遍历.description以获取数组中的所有字符串。您也可能不需要长度,因为description.length会为您提供描述中的项目数。
答案 2 :(得分:0)
是的,这是可能的。例如,如果您在编程时已经知道了这些值,就可以这样做:
var picarrays=[{description:"bla","length":1234,"indivpicarray":["a","b","c"]},
{description:"blah","length":145,"indivpicarray":["a","c","g"]}];
这为您提供了一组数组对象。
答案 3 :(得分:0)
JavaScript中有一个名为Array
的对象,它应该完全符合您的需要。
请参阅http://www.w3schools.com/JS/js_obj_array.asp上的示例,或只是谷歌“javascript数组”
希望有所帮助
答案 4 :(得分:0)
/* The function constructor of your objects usually use a capitalized names
* */
var Picsobj = function(description,indivpicarray){
this.description=description;
this.indivpicarray=indivpicarray;
};
/* Is better convert length to a method instead a property passed to the constructor. */
/* The methods are attached to the prototype propertie of the constructor. `this` refers to
* the actual object where the method is called.
* */
Picsobj.prototype.getLength = function() {
if(typeof(this.indivpicarray) != 'object')
return 0;
return this.indivpicarray.length;
};
/* Example */
var pic = new Picsobj('Description of pic', ['pic1.jpg','pic2.jpg']);
var anotherPic = new Picsobj('Description of anotherPic', ['anotherPic1.jpg','anotherPic2.jpg']);
console.log(pic.getLength());
console.log(anotherPic.getLength());