问大家一个少见的问题。解决者独得100分

wxlada 2004-09-24 11:44:38
oTr是个<tr>的object
NewID是个字符串变量,如“testID”

设置tr的一个属性,oTr.setAttribute("id",NewID);

形成的html代码是<tr id=testID>

请问在js里,是否能强制让这个id的值加上引号的,变成<tr id="testID">

NewID里有些特殊的字符的时候,js会给id的value加上引号的,比如空格和单引号等等。但是我需要在没有这些特殊字符的时候形成的html能有引号,有什么办法解决吗?
...全文
132 15 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fason 2004-09-24
  • 打赏
  • 举报
回复
用insertBefore,去看DOM的参考
wxlada 2004-09-24
  • 打赏
  • 举报
回复
多谢fason(Forbes Pu),我的用法,是要在table的某个tr上插入一行新的tr。
var oTr=tbobject.insertRow(index);

请问你用createElement创建一个tr后,能否用appendChild等方法插入到某个索引的位置呢?

haluomao 2004-09-24
  • 打赏
  • 举报
回复
这其实是个挺有用的工具,以前把HTML改成XSL的时候,不符合规范的地方都要改,很麻烦的,你要是作出来这样一个转换工具,记得发上来阿
fason 2004-09-24
  • 打赏
  • 举报
回复
标准答案已经写了,字符串操作你是弄个没完的,直接在Xmldomdocument里面创建对象
var objXmldom = new ActiveXObject("MSXML2.DomDocument");
var tr = objXmldom.createElement("tr");
tr.setAttribute("id", NewID);
haluomao 2004-09-24
  • 打赏
  • 举报
回复
那你用代码replace一下也可以,txt.replace('id='+NewId,'id="'+NewId+'"')
wxlada 2004-09-24
  • 打赏
  • 举报
回复
不止如此,以前加上引号的属性,在js的object 为table里一过,就没了。还有如
<INPUT 这样的结点,最末开始加上/>的都自动把/给去掉了。又是不合法的xml,郁闷啊。

replace的方法不是没想过,id是动态形成的。用replace替换很麻烦的。而且,这是在htc里形成的,放到外面去用,乱七八糟的,头疼啊。

多谢meizz(梅花雪)的回答。我只能说js不够规范啊。惨
meizz 2004-09-24
  • 打赏
  • 举报
回复
我知道在XML里属性值不加引号是会出错的. 可是在JS里和在HTML里都没有这种强制加引号的东西呀
最多是在放到XML里去的时候用替换法加些引号上去.
我建议你用编辑器来完成这项操作是说你平时书写代码不规范, 不加引号, 而有些编辑器会自动地加上这些引号规范你的代码, 我当然是认真地看过你的问题才这样回复你的.
fason 2004-09-24
  • 打赏
  • 举报
回复
document => objXmldom

var tr = objXmldom.createElement("tr");
tr.setAttribute("id", NewID);
zltostem 2004-09-24
  • 打赏
  • 举报
回复
强制的话,

要么养成习惯,加上引号

要么用编辑器

有的功能(比如加空格、tab之类的)还可以通过程序自动加上

具体问题具体分析了~~~

wxlada 2004-09-24
  • 打赏
  • 举报
回复
不明白楼上的意思。请认真看我提出的问题,我这里是在js里生成一个表格的对象,给一个tr加属性,这跟编辑器有什么关系吗?如果是写死的,我完全可以在记事本里加上的。不加引号在html代码里是不会有问题,可是我需要把这段html代码放到xml里使用。没有引号则为不合法的xml。

xxc1981(asf),这种方法当然试过。

我要问的是,js里是不是提供强制加上引号的方法,在加属性里。如果没有,大家有没有什么点子可以变相解决问题的呢?
meizz 2004-09-24
  • 打赏
  • 举报
回复
在HTML里, 每个标签的属性值并不强求一定要加上引号, 即你不加引号也不会出错, 你若强制要加上这些引号, 你可以选择带些项功能的编辑器来替你完成, 比如说: visual studio .net 编辑器等工具
xxc1981 2004-09-24
  • 打赏
  • 举报
回复
oTr.setAttribute("id","\""+NewID+"\"");
试试吧
wxlada 2004-09-24
  • 打赏
  • 举报
回复
js在属性id class 是自动把双引去掉的。其他的属性如style等等,则是有双引的,具体为什么要这样,问号。结贴。多谢帮忙。
fason 2004-09-24
  • 打赏
  • 举报
回复
插入结点用insertBefore,appendChild,这是DOM的标准用法

关键不是能不能有引号出来,你自己都搞糊涂了,既然最终目的是要在XML中应用,在里面的对象都建好了还理不理有双引?
wxlada 2004-09-24
  • 打赏
  • 举报
回复
fason(Forbes Pu)的方法,试一试先,如果这么加能有引号出来,那js就比较好玩了。

顺便问一下,在js里操作xml,在插入结点时,有没有insertBefore或者类似的方法存在啊?
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2004-09-24 11:44
社区公告
暂无公告