How Do I Access The Object Instance From Within Class
Apr 22, 2007
I have a javascript object which dynamically generates a table adding, deleting and moving rows as the user clicks on buttons or links. Problem is when I generate a table row and add the javascript method call to my class, I have to put the object instance name variable of the class in order for it to be called from the onclick=function(). This is seriously limiting, but I'm stuck for a way round it. Heres a edited of the code so you get the idea....
Instantiating the object :-
var dtl = new DynamicTableList("table1", $
{myObject.allFieldsAsJavaScriptArray}, true, true, true);
My javascript class DynamicTableList, note the dtl javascript object
instance variable being referred to in the addRow function. How can I
avoid this???
if (showDelete)
{
var cell2 = document.createElement('TD');
var inp2 = document.createElement('IMG');
/
************************************************** ***********************************************/
inp2.onclick=function(){dtl.delRow(this);} // Have to specify
dtc!!!!!!!!
/
************************************************** ***********************************************/
inp2.title='Delete'
inp2.alt='Delete'
inp2.src='images/delete.gif'
cell2.appendChild(inp2);
row.appendChild(cell2);
}
...
tbody.appendChild(row);
this.processRows();
};
this.moveRow = function(node, vector)
{
};
}
Obviously the code dtl.delRow(this); is being dynamically generated, but how do I replace the dtl instance name with something that'll work whatever the user of this class calls the instance of it!
I need to change the background-image (or possibly background-position) property of each new instance of a div with a particular class. I will have a set of images to choose from, or could create a sprite with all of the images.
I'm trying to use a variable that is passed into a function to to dynamically name an instance of an Object(). I've created a Timer() Object that seems to work just fine... the problem is I can't figure out how to pass in an instance name into setTimer() to create a new instance of Timer() object?? My ultimate goal is to have multiple instances of the Timer() Object running at once. While the code below works it only allows me to create 1 instance of the Timer() Object with the name of tmp. Code:
I have made/modifying a script that I can create AJAX objects on the fly. It is working fine in Chrome, FF, Opera, Safari but not IE -.- IE = nightmare
I've been playing around with JS for a while, but I've not ever found fantastic learning resources. I'm comfortable with other programming languages, so I'm very interested in OOP programming for JS, and I've started to use tools like the Prototype library for that purpose.
However, one problem has consistently caused me problems whenever I'm writing a JS Class. How can I get a reference to the specific class instance from inside an event handler that I create with a class method. Let me give an example of what I want to do:
(This code is using the Prototype library...)
myClass = Class.create(); myClass.prototype = { makeLink: function(obj) { // Out here, "this" refers to the instance of the myClass Class obj.innerHTML = '' obj.onclick = function() { // In here, "this" refers to the clicked on element. // How do I get a reference to the instance of myClass in here? } }
Here's the best way that I know how to do this right now. It seems to work in Firefox alright, but doesn't seem to work in IE:
myClass = Class.create(); myClass.prototype = { makeLink: function(obj) { obj.innerHTML = '' self = this; // Save a reference to class instance as "self" obj.onclick = function() { // Self is evaluated to instance reference at time of assignment to onclick self.linkClicked(); }
linkClicked: function() { // Do something useful here }
}
Is there a more elegant way to do this? I could just create all of my event handlers for objects outside of the class in procedural code where I already have a reference to the class object, but I like to wrap these things up inside the class, because sometimes they get significantly more complicated than this very simple one. Anybody have any solutions? This has to be a common design pattern...
I am trying some simple things with javascript and trying to use it in a object oriented way. However I am now facing a problem in which I can't access an object variable from an object method. I am using jQuery.
My code is as follows;
Code:
My problem is that the variable msg1 does not work when accessed from function called from the jQuery get function. I get the message undefined. Therefore I am wondering, is there a way how I can access msg1 of my object instance from the get function of jQuery?
How can I access class name without using id. I have following div tag: <div class="aa bb cc"> </div> Their are three classes if I access class then which one will be access.
I was wondering how to access parents class variable. For example: Code: function Class(){ this.variable; } SubClass.prototype = Class; SubClass.prototype.constructor = SubClass; function SubClass(){ this.secondVariable = Class.variable; <-how to access parent variable? }
Now we have alerts only for three old elements. This is clear. Because these elementes have been initiated before page generated. But the new one is ignored.
The question is - how i can add new elements to the UL list? It would be glad if "jQuery.each" could read four and more elements - not just the first three initiated elements.
I have 95 different objects like this one: obj1Object = { name: "some name", type: "type", picid: "001", maxvl: 500000, minvl: 5000, clsid: 1, movable: true, size: [45, 45], note: "Some text here" } Now what I need is to access these objects only when I need then. Right now they all load when accessing my program so all 95 of them are "somewhere" in memory.
I've created an object with properties and methods. The object is associated with a form. The object iterates through the form and finds any inputs that are required. It then uses each to apply validation to each of the found inputs. From within each(), I need to access properties and methods of the parent object, but now this refers to the current collection object. How do I access the containing object?
If "this" inside of a sortable "receive" function refers to the receiving object, How do I access the object to which the receive function belongs?
Example: // Function that takes a JQ object and makes it sortable. // We assign the "SortableRecieve" method to the receive event MyObject.prototype.MakeSortable = function(JQOBJ){ JQOBJ.sortable({ receive: this.SortableRecieve });}
MyObject.prototype.DoSomething = function(){ // Does something important } // The actual function that gets called when the receive event occurs MyObject.prototype.SortableRecieve = function(event, ui){ // This function call won't work, because "this" // doesn't point to the right thing! this.DoSomething(); } So how can I access the "True" this that refers to the object?
Now, if I want to get all the list items after the first, and change the text within the anchor tags, if a certain condition is met (eg change to capitals if it starts with a "t"). How can I do that? My approach was to get all the list items (after the first) with
I am fairly familiar with the concept of Objects and their properties and methods, but javascript being object based as opposed to object oriented has me stumped on how to access an object's properties from an onclick event handler created for another object created within the original object.
In the example below, I have a constructor function called anyObj. to which I pass an object reference to an element.
anyObj has 3 properties and one function increaseWidth()
increaseWidth() creates a new button with an onclick event handler and this is where I have a problem.
The onclick function needs to increase the value of anyObj's this.width property. I originally had a line this.width += 10; in the onclick but quickly realised why this wasn't working because the this in the onclick function refers to the new button object and not the this.width property of anyObj.
The workaround I have used, and it works, is to make a copy of all the this.xxxxx properties. eg. width = this.width; and use the width variable in the onclick as you can see below. This "workaround" works fine but doesn't feel ideal to me.
So is there a better way to access the anyObj()'s properties from within the onclick function than the way I have done it? Obviously I would prefer to not have to make copies of all the anyObj() properties like I have to make them accessible to the onclick function.
I have a JS method register in a TD element as below:
Below is the Js Method:
The JS method works fine in IE but in mozilla throws an error that event is undefined.
I cant pass the event object from HTML while registering the method as HTML is written by someone else and I cannot change that. All I can change is the JS method.
I've created an object and within this object, I've added an eventlistener. But the problem now is that after addEventListener is being called to access a callback function, the callback function is not able to access the properties within its own class. Code: