aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 12019|回复: 7

修改克隆节点innerHTML的问题

[复制链接]

19

主题

294

回帖

1945

积分

新手入门

积分
1945
发表于 2012-6-2 18:28:57 | 显示全部楼层 |阅读模式
import win.ui;
import web.layout
/*DSG{{*/
var winform = ..win.form( right=599;bottom=399;parent=...;text="aardio Form" )
winform.add(
button={ bottom=393;text=
"添加一行";left=21;top=357;z=2;right=104;cls="button" };
static={ bottom=320;text=
"static";left=34;top=22;z=1;transparent=1;right=563;cls="static" };
button2={ bottom=395;text=
"修改一行";left=129;top=354;z=3;right=231;cls="button" }
)
/*}}*/

layout = web.layout( winform.static )
html =
/**
    <html>
    <body>
    <table id="myTab">
        <tr>1</tr>
        <tr>2</tr>
        <tr>3</tr>
    </table>
    </body>
    <html>


**/


layout.write(html)
var myTab = layout.getEle("myTab")

winform.button.oncommand =
function(id,event){
   
var newNode = myTab.child(1).clone()
    newNode.child(1).innerHTML =
"new"
    myTab.append(newNode)
}

winform.button2.oncommand =
function(id,event){
    myTab.child(1).innerHTML =
"修改了"
}

winform.show();
win.loopMessage();

想动态添加table的一列,实现listview的控件。克隆了一个节点,然后修改新节点的 innerHTML,但是修改失败。请教下动态添加新节点的方法。谢谢




1

主题

6

回帖

75

积分

一级会员

积分
75
发表于 2012-6-2 18:44:03 | 显示全部楼层
您好。
您的意思是修改最后一个(也就是新克隆出来的节点)的 innerHTML 吗?

您可以将:

myTab.child(1).innerHTML = "修改了"

修改为

myTab.child(myTab.children()).innerHTML = "修改了"

children() 就是获取总数,也就是最大的索引值,可以这样获取最后一个节点。

1

主题

6

回帖

75

积分

一级会员

积分
75
发表于 2012-6-2 18:48:04 | 显示全部楼层
您好。
虽然您的HTML这样写可以正常显示,但是我更推介您用更标准的写法:

html = /**
    <html>
    <body>
    <table id="myTab">
        <tr><td>1</td></tr>
        <tr><td>2</td></tr>
        <tr><td>3</td></tr>
    </table>
    </body>
    <html>


**/

tr 代表行,td代表单元格,单元格是在行中的,这样您以后想实现多列也会更方便。

那么下面那个代码要修改成:

myTab.child(myTab.children()).child(1).innerHTML = "修改了"

1

主题

6

回帖

75

积分

一级会员

积分
75
发表于 2012-6-2 18:51:23 | 显示全部楼层
您如果想在克隆的同时修改新的节点内容,您可以:

winform.button.oncommand = function(id,event){
    var newNode = myTab.child(1).clone();
    newNode.child(1).innerHTML = "new";
    myTab.append(newNode);
}

修改为

winform.button.oncommand = function(id,event){
    var newNode = myTab.child(1).clone();
    myTab.append(newNode);
    newNode.child(1).innerHTML = "new";
}

就可以了。

19

主题

294

回帖

1945

积分

新手入门

积分
1945
 楼主| 发表于 2012-6-2 19:09:16 | 显示全部楼层
宇博 发表于 2012-6-2 18:51
您如果想在克隆的同时修改新的节点内容,您可以:

winform.button.oncommand = function(id,event){

谢谢

1

主题

6

回帖

75

积分

一级会员

积分
75
发表于 2012-6-2 19:21:00 | 显示全部楼层
ljtnine 发表于 2012-6-2 19:09
谢谢

您不用客气 :)

4

主题

852

回帖

4689

积分

荣誉会员

积分
4689
发表于 2012-6-2 19:28:14 | 显示全部楼层
这样写也可以

import win.ui;
import web.layout
/*DSG{{*/
var winform = ..win.form( right=599;bottom=399;parent=...;text="aardio Form" )
winform.add(
button={ bottom=393;text=
"添加一行";left=21;top=357;z=2;right=104;cls="button" };
static={ bottom=320;text=
"static";left=34;top=22;z=1;transparent=1;right=563;cls="static" };
button2={ bottom=395;text=
"修改一行";left=129;top=354;z=3;right=231;cls="button" }
)
/*}}*/

layout = web.layout( winform.static )
html =
/**
    <html>
    <body>
    <table id="myTab">
        <tr><td>1</td></tr>
        <tr><td>2</td></tr>
        <tr><td>3</td></tr>
    </table>
    </body>
    <html>
**/


layout.write(html)
var myTab = layout.getEle("myTab")

winform.button.oncommand =
function(id,event){
    myTab.insertAdjacentHTML(
"beforeEnd","<tr>new</tr>")
}

winform.show();
win.loopMessage();

19

主题

294

回帖

1945

积分

新手入门

积分
1945
 楼主| 发表于 2012-6-2 19:50:34 | 显示全部楼层
不争 发表于 2012-6-2 19:28
这样写也可以

import win.ui;

谢谢
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-1-18 18:08 , Processed in 0.062548 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表