1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-08-20 20:54:47 -04:00

DOM, HTMLCollection: Defined the namedItem method.

This commit is contained in:
Witold Filipczyk 2007-06-12 16:39:44 +02:00 committed by Witold Filipczyk
parent 4df27a6700
commit 46584fc5c0

View File

@ -6,6 +6,7 @@
#include "document/dom/ecmascript/spidermonkey.h"
#include "document/dom/ecmascript/spidermonkey/html/HTMLCollection.h"
#include "document/dom/ecmascript/spidermonkey/html/HTMLElement.h"
#include "dom/node.h"
static JSBool
@ -40,6 +41,8 @@ HTMLCollection_namedItem(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv,
jsval *rval)
{
struct dom_node_list *list;
unsigned char *id;
int i;
if (!obj || (!JS_InstanceOf(ctx, obj, (JSClass *)&HTMLCollection_class, NULL)))
return JS_FALSE;
@ -49,7 +52,45 @@ HTMLCollection_namedItem(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv,
return JS_FALSE;
/* Write me! */
id = jsval_to_string(ctx, &argv[0]);
for (i = 0; i < list->size; i++) {
struct dom_node *node = list->entries[i];
struct HTMLElement_struct *html;
unsigned char *name;
if (!node)
continue;
html = node->data.element.html_data;
if (!html)
continue;
name = html->id;
if (!name)
continue;
if (!strcasecmp(name, id)) {
object_to_jsval(ctx, rval, node->ecmascript_obj);
return JS_TRUE;
}
}
for (i = 0; i < list->size; i++) {
struct dom_node *node = list->entries[i];
JSObject *obj;
unsigned char *name;
jsval v;
if (!node)
continue;
obj = node->ecmascript_obj;
if (!obj)
continue;
if (!JS_GetProperty(ctx, obj, "name", &v))
continue;
name = jsval_to_string(ctx, &v);
if (!strcasecmp(name, id)) {
object_to_jsval(ctx, rval, obj);
return JS_TRUE;
}
}
undef_to_jsval(ctx, rval);
return JS_TRUE;
}