Getting Table Cell Values.
Getting Table Cell Values.
You would think grabbing a cell of a table at column X and row Y would be simple, but I didn't find it. I started with the MULTIPLE LINE example but fnGetNodes didn't want to play with fnGetData and fnGetPosition and returned an alert box with "undefined" instead:
[code]
function fnGetSelected( oTableLocal )
{
var aReturn = new Array();
var aTrs = oTableLocal.fnGetNodes();
var aPos;
var aData;
for ( var i=0 ; i MAX_DUMP_DEPTH) {
return indent + name + ": " + depth + "\n";
}
if (typeof obj == "object") {
var child = null;
var output = indent + name + "\n";
indent += "\t";
for (var item in obj)
{
try {
child = obj[item];
} catch (e) {
child = "";
}
if (typeof child == "object") {
output += dumpObj(child, item, indent, depth + 1);
} else {
output += indent + item + ": " + child + "\n";
}
}
return output;
} else {
return obj;
}
}
[/code]
Dumping the object showed me there was no way to reference an individual cells of data?! The entire data row can be grabbed by the method .textConent. So I hacked together:
[code]
var pos=aTrs[i].textContent;
var posarr=pos.split("\n");
for ( var j=0 ; j
[code]
function fnGetSelected( oTableLocal )
{
var aReturn = new Array();
var aTrs = oTableLocal.fnGetNodes();
var aPos;
var aData;
for ( var i=0 ; i MAX_DUMP_DEPTH) {
return indent + name + ": " + depth + "\n";
}
if (typeof obj == "object") {
var child = null;
var output = indent + name + "\n";
indent += "\t";
for (var item in obj)
{
try {
child = obj[item];
} catch (e) {
child = "";
}
if (typeof child == "object") {
output += dumpObj(child, item, indent, depth + 1);
} else {
output += indent + item + ": " + child + "\n";
}
}
return output;
} else {
return obj;
}
}
[/code]
Dumping the object showed me there was no way to reference an individual cells of data?! The entire data row can be grabbed by the method .textConent. So I hacked together:
[code]
var pos=aTrs[i].textContent;
var posarr=pos.split("\n");
for ( var j=0 ; j
This discussion has been closed.
Replies
[code]
var pos = this.innerHTML;
var poscln = pos.replace(/^\s|<\/?[^>]+(>|$)/g, "");
var posarr=poscln.split("\n");
for ( var j=0 ; j
I'm not exactly clear on what you are trying to do. Perhaps if you could explain that, I'd (hopefully) be able to point you at an easier solution. For example, I'm don't think this little piece of code makes sense:
[code]
aPos=oTableLocal.fnGetPosition(aTrs[i]);
aData=oTableLocal.fnGetData(aTrs[i]);
alert(aData[aPos[1]] );
[/code]
When passed a TR element, fnGetPosition() will only return an integer - not an array ( http://datatables.net/api#fnGetPosition ). Therefore using the undefined variable aPos[1] is going to give an error. Which is what you are seeing. So the question is - how do you know which column you want the data from?
Allan
Thanks for the follow up. That helped. I'm a bit green and thought in the example 'this' refered to a row rather than the table.
In general I want a generic way to get the value of a cell from a row of data in the context of the multi row select example.
When I failed to get the native GetData and GetPosition function to work I tried cell() and other methods, which also failed. I finally grabbed the innerHTML which worked with both FireFox and IE, but this dumped the raw text and I had to parse the HTML myself as shown in the earlier post. I suspect I am missing something here.
fnGetData will give you the innerHTML of a cell - so if you have HTML in there, then you will get this in the string as well. What it sounds like you might what to do is get the cell and use DOM selectors on it to get the value of nested HTML - does this sound like I'm going along the right lines?
So if you have event handlers attached to a row, then you can just bypass any DataTables specific methods and query the DOM:
[code]
$('#example tbody tr').click( function () {
// Alert the contents of an element in a SPAN in the first TD
alert( $('td:eq(0) span', this).html() );
} );
[/code]
Regards,
Allan