微軟專家請進﹐innerHTML問題﹗ 如果:strTemp="<a>"那么﹕alert出來的就是﹕<a></a> 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <SCRIPT LANGUAGE="JavaScript"><!--var TableId = document.createElement('table');document.body.appendChild(TableId);var row = TableId.insertRow();var cell = row.insertCell();var strTemp = "< a href='test.htm'> < /a>";cell.innerHtml = strTemp;alert(cell.innerHtml);//--></SCRIPT>你看这样可以不! SORRY,看错一个东西写错了!不要意思我再看看! 呵呵﹐謝謝﹐<a>里面a的前面多加個空格應該是可以的﹐我查過msdn的相關內容﹐innerHTML是會將里面的html tag進行替換的﹐我不知道是否有什么屬性﹐方法可以設置一下﹐或者用其他的解決方案﹗ <SCRIPT LANGUAGE="JavaScript"><!--var TableId = document.createElement('table');document.body.appendChild(TableId);var row = TableId.insertRow();var cell = row.insertCell();var strTemp = "<a href = '//text.htm'>"+" </a>";cell.innerHTML = strTemp;alert(cell.innerHTML);//--></SCRIPT>这样好像就不会是绝对路径了 好象現在的csdn也對html的標簽進行了處理﹐加空格了﹗ 呵呵,我可没有加空格哦,是电脑在拷贝的时候自动给加上的。那个不是我的错,我的错误是把innerHTML写成了innerHtml了,你知道大小写是敏感的,所以就不行了!不过后面的一种方法不知道是不是你想要的结果了。 嗯﹐是csdn給加的空格﹗好的﹐我馬上試試﹗ 彈出來的是這個﹕<a herf="file://test.htm/"></a>這個相當于是本地的絕對路徑﹐如果換服務器或路徑時都還是不行﹐而且我這里是需要進數據庫的東西﹐長度給改變了﹗ 如果: strTemp="<a> " 那么﹕ alert出來的就是﹕<a></a> 它會將html tag補全﹗ 主要的是我的東西要進數據庫﹐比如本來是相對路徑﹐ 如果經過innerHTML的修改﹐進數據庫的就成了絕對路徑了﹐這不是我希望的﹗ <SCRIPT LANGUAGE="JavaScript"><!--var TableId = document.createElement('table');document.body.appendChild(TableId);var row = TableId.insertRow();var cell = row.insertCell();var strTemp = "<a href = 'tabletest1.html'>fdsdfsdf"+" </a>";cell.insertAdjacentHTML("afterBegin",strTemp);alert(cell.innerHTML);//--></SCRIPT>我的代码是这样的保存了这个文件为innerHTMLtest.html,当换了目录之后还是可以找到所链接的那个页面,只要两个文件在同一个目录下面就可以了,所以,这个路径是根据当前文件所判断出来的一个相对的路径。不过如果你是用的WEB数据库的话,那么我就没有办法测试了!如果实在不行的话,我建议你使用链接一段JAVASCRIP代码,或者使用完整的URL连接。 如果你的仅仅是从数据库里面取出数据来作为一个连接的话,那么这个问题我想是比较好办的,下载连接:http://soft.269.net/SoftWareList.asp?ClasstreePos=0l2这个连接可以下载到一个叫做JCL的B/S数据库开发包,前台都是用JAVASCRIPT写的代码,里面的DBGRID组件中的一个列类型就是用的链接类型,是可以从数据库中取出数据作为数据链接的。比如说客户的网址是一个链接的话,那么以文本的形势存进数据库,然后以链接的形势展现出来。你可以看看演示网页。如果在正式版里面没有的话,那么可以下载试用版的,里面应该有的。如果没有的话,我可以给你一段这样的程序。 http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/innerhtml.asp這里有關于innerHTML的一些描述﹗ 呵呵,我现在还开着MSDN的2001年6月版本的。如果是动态的生成链接的话,用那么一段JAVASCRIPT代码就可以了!还有如果是做这方面的数据库应用的话不一定要用JCL那个东西,不过完全可以参考那个东西的。应该说还是比较有价值的。下载完整版的安装后点快捷方式就可以看到了,在正式版的雇员信息那个页面里面,在DBGRID中其中有那么一列就是雇员的E_MAIL,就是一个你说的这样的应用吧! 我的應用是這樣的﹕模擬不刷新的對數據庫操作的葉面﹐用jsp做的﹗ 點擊某行﹐此行動態構造input給輸入﹐修改等﹐然后保存﹐用0*0的iframe來處理對數據庫的操作﹐葉面不進行刷新﹗ 問題如下﹕錄入狀態﹕某行某列: <input name="" value="xyz">保存后﹐此行列為﹕xyz進數據庫基本沒有問題﹐就是多操作几次后﹕<input name="" value="<a>">此時﹕那個地方的值變為﹕<a></a>再點﹕則﹕<input name="" value="<a></a>">能明白我的意思嗎﹗ 呵呵﹐很謝謝你和我討論這個問題﹗ 不刷新页面的数据库操作?JCL就是针对这个概念做的了!我还是没有太明白你的意思。我猜测你的做法是,一个TABLE元素了,然后在点击事件里面在某个单元格生成INPUT的TEXT元素,然后输入保存对吧。而且为了达到目的,你对每一个(或者是某一个获得焦点的)CELL进行了HTML赋值从而改变里面的元素类型。其实没有必要这么做的,不知道你对DOM模型使用了没有。我建议你使用DOM模型。会比HTML简单很多了,面向对象的方法。JCL最初的时候也是使用的的innerHTML的形势。不过后来全改了。如果我的猜测不错的话,里面的东西就是你想要的了。DBGRID就是一个可以编辑,成批数据录入提交的那么一个组件了。具体的你可以看看它的源代码了。我也不好说得很清楚,因为我对你的情况不是很了解。至于你的客气似乎就不必了,因为我也在用JAVASCRIPT了,大家共同提高是件好事情了。 我目前是這么做的﹗每一行行首有個編輯按鈕﹐點擊后該行循環用tableid.rows[].cells[].innerHTML取值賦到生成的input的value,保存后恢復原來沒有控件的感覺也是循環取tableid.rows[].cells[].children[0].value然后賦到tableid.rows[].cells[]里面去﹗你說的那個東西﹐我會下下來看看的﹗ 果然是了,就是用innerHTML生成INPUT TEXT元素吧!其实你可以尝试完全使用JAVASCRIPT来构造这个东西了!代码可以这样了!var datainput = document.createElement('input');datainput.type ='text';datainput.value= '';var cell = tableid.rows[].cells[];cell.appendChild(datainput);这样你就可以避免使用复杂的HTML语句了。如果要取值的话,那么使用cell.value就可以直接的操作了。如果你不想要那个text了,那么你就可以删除调就可以了。同样的可以采用循环的方式的。感觉是不是更为的面向对象一点。你下载那个东西看了之后我想你对这个操作就有个很直观的了解了!这么和你说吧,我就是那个DBGRID的设计者了。如果有什么问题我们还可以讨论。还有那个帮助里面的价格问题你也不用担心的。如果你们是大的开发用户的话那么如果可能的话签署合作协议之后你们就可以免费的使用这个东西了。这样你们就不用写很多的代码了开发了。不过那个DBGRID也有一些问题的,只是不影响功能罢了。我们现在正在构建新的DBGRID。而且我们的IDE开发小组也正在构建基于JCL组件的集成开发环境。如果你的东西是符合开发规范的,你也可以自己写自己的组件,到时候只要添加进去就可以在这个环境里面给用户构造JSP了。只是这个东西要等那么一段时间了。也欢迎你提出各种意见。虽然有推销的嫌疑,不过我还是很乐意从技术上和大家讨论的。毕竟我知道的还是有限,希望和大家交流。希望不要因为这个原因影响大家的交流。 在取值的时候你应该使用的是innerText。也就是cell.innerText = datainput.value;删除结点cell.removeChild(datainput);datainput.removeNode(false);那么就搞定了。应该说完全符合你的要求的。只是看你明白我的意思没有了! 刚刚给你发了一个帖子没有贴上去。取值应该使用innerTextcell.innerText = datainput.value;删除结点cell.removeChild(datainput);datainput.removeNode(false);搞定。 elem.innerHTML = strTemp.replace("<","<");OK! var cell = tableid.rows[].cells[]; cell.innerText = strTemp; 這樣基本達到了我的目的﹗ 還有單引號和雙引號的問題﹐估計用var datainput = document.createElement('input'); datainput.type ='text'; datainput.value= '';這種方式可以解決﹗ 哦﹐我試了一下﹐单引号和双引号總會有個有問題﹗ 下面我描述一下啊﹗<id="a" input value=""><id="b" input value=''>當通過變量賦帶有雙引號的值給a時﹐原本的值就顯示不全﹐例如﹕<id="a" input value="test"temp"> 這時候看到的就只有test了﹗單引號同理﹗ 这个问题简单了,因为单双引号都是最近匹配的,不存在象括号一样的级别匹配,所以,当它的有效的部分肯定是两个双引号中间的部分了,所以只能是TEST了。如果你的赋值是一个需要执行的字符串,那么就应该使用单双引号交替了,中间是单引号,外面是双引号。<id="a" input value=""> <id="b" input value=''> 是一样的效果。<id="a" input value="1"> <id="b" input value='1'> 也是一样的效果。<id="a" input value="select * from customs where name = 'join'">正确。 <id="b" input value='select * from customs where name = 'join''>错误。 <id="b" input value="select * from customs where name="+"'"+"join"+"'">也可以了。 但是input里面的是別人輸入的呀﹐可能輸入單引號﹐也可能輸入雙引號啊﹐而之前我只能選擇一種﹐要么<id="a" input value=""> 要么<id="b" input value=''> 能不能用innerText,它可以使用添加的内容不转变为脚本文件。 在Link上POPUP出目标页面 关于dtree点击图标展开的问题 熟悉常见 的图片 特效 算法 ??? yahoo ui 的问题:yui panel的关闭问题 javascript 悬浮菜单 复选联动? 只知道表格的名称,怎样获取表格中的 text 框以及 select 框两个对象,以及他们当前选中的值!谢谢! JS的问题,近来看看,谢谢! 一个全选代码的问题,大家快来帮忙呀! 如何在使用ActiveX控件的时候不出现安全提示框?? web下怎么用程序控制打印时的纸张类型?? 有两个单选钮,当点击一个时,另外一个文本框的内容随之改变,怎么写?
<!--
var TableId = document.createElement('table');
document.body.appendChild(TableId);
var row = TableId.insertRow();
var cell = row.insertCell();
var strTemp = "< a href='test.htm'> < /a>";
cell.innerHtml = strTemp;
alert(cell.innerHtml);//-->
</SCRIPT>
你看这样可以不!
<!--
var TableId = document.createElement('table');
document.body.appendChild(TableId);
var row = TableId.insertRow();
var cell = row.insertCell();
var strTemp = "<a href = '//text.htm'>"+" </a>";
cell.innerHTML = strTemp;
alert(cell.innerHTML);//-->
</SCRIPT>这样好像就不会是绝对路径了
<a herf="file://test.htm/"></a>這個相當于是本地的絕對路徑﹐如果換服務器或路徑時都還是不行﹐而且我這里是需要進數據庫的東西﹐長度給改變了﹗ 如果:
strTemp="<a> "
那么﹕
alert出來的就是﹕<a></a> 它會將html tag補全﹗
<!--
var TableId = document.createElement('table');
document.body.appendChild(TableId);
var row = TableId.insertRow();
var cell = row.insertCell();
var strTemp = "<a href = 'tabletest1.html'>fdsdfsdf"+" </a>";
cell.insertAdjacentHTML("afterBegin",strTemp);
alert(cell.innerHTML);//-->
</SCRIPT>我的代码是这样的保存了这个文件为innerHTMLtest.html,当换了目录之后还是可以找到所链接的那个页面,只要两个文件在同一个目录下面就可以了,所以,这个路径是根据当前文件所判断出来的一个相对的路径。不过如果你是用的WEB数据库的话,那么我就没有办法测试了!如果实在不行的话,我建议你使用链接一段JAVASCRIP代码,或者使用完整的URL连接。
下载连接:http://soft.269.net/SoftWareList.asp?ClasstreePos=0l2
这个连接可以下载到一个叫做JCL的B/S数据库开发包,前台都是用JAVASCRIPT写的代码,里面的DBGRID组件中的一个列类型就是用的链接类型,是可以从数据库中取出数据作为数据链接的。比如说客户的网址是一个链接的话,那么以文本的形势存进数据库,然后以链接的形势展现出来。你可以看看演示网页。如果在正式版里面没有的话,那么可以下载试用版的,里面应该有的。如果没有的话,我可以给你一段这样的程序。
模擬不刷新的對數據庫操作的葉面﹐用jsp做的﹗ 點擊某行﹐此行動態構造input給輸入﹐修改等﹐然后保存﹐用0*0的iframe來處理對數據庫的操作﹐葉面不進行刷新﹗ 問題如下﹕
錄入狀態﹕
某行某列: <input name="" value="xyz">
保存后﹐此行列為﹕xyz
進數據庫基本沒有問題﹐就是多操作几次后﹕
<input name="" value="<a>">
此時﹕那個地方的值變為﹕<a></a>
再點﹕則﹕<input name="" value="<a></a>">
能明白我的意思嗎﹗ 呵呵﹐很謝謝你和我討論這個問題﹗
每一行行首有個編輯按鈕﹐點擊后該行循環用tableid.rows[].cells[].innerHTML取值賦到生成的input的value,保存后恢復原來沒有控件的感覺也是循環取tableid.rows[].cells[].children[0].value然后賦到tableid.rows[].cells[]里面去﹗你說的那個東西﹐我會下下來看看的﹗
代码可以这样了!
var datainput = document.createElement('input');
datainput.type ='text';
datainput.value= '';
var cell = tableid.rows[].cells[];
cell.appendChild(datainput);
这样你就可以避免使用复杂的HTML语句了。
如果要取值的话,那么使用cell.value就可以直接的操作了。
如果你不想要那个text了,那么你就可以删除调就可以了。
同样的可以采用循环的方式的。感觉是不是更为的面向对象一点。你下载那个东西看了之后我想你对这个操作就有个很直观的了解了!
这么和你说吧,我就是那个DBGRID的设计者了。如果有什么问题我们还可以讨论。还有那个帮助里面的价格问题你也不用担心的。如果你们是大的开发用户的话那么如果可能的话签署合作协议之后你们就可以免费的使用这个东西了。这样你们就不用写很多的代码了开发了。不过那个DBGRID也有一些问题的,只是不影响功能罢了。我们现在正在构建新的DBGRID。而且我们的IDE开发小组也正在构建基于JCL组件的集成开发环境。如果你的东西是符合开发规范的,你也可以自己写自己的组件,到时候只要添加进去就可以在这个环境里面给用户构造JSP了。只是这个东西要等那么一段时间了。也欢迎你提出各种意见。
虽然有推销的嫌疑,不过我还是很乐意从技术上和大家讨论的。毕竟我知道的还是有限,希望和大家交流。希望不要因为这个原因影响大家的交流。
也就是cell.innerText = datainput.value;
删除结点
cell.removeChild(datainput);
datainput.removeNode(false);
那么就搞定了。应该说完全符合你的要求的。只是看你明白我的意思没有了!
取值应该使用innerText
cell.innerText = datainput.value;
删除结点
cell.removeChild(datainput);
datainput.removeNode(false);
搞定。
cell.innerText = strTemp; 這樣基本達到了我的目的﹗ 還有單引號和雙引號的問題﹐估計用
var datainput = document.createElement('input');
datainput.type ='text';
datainput.value= '';這種方式可以解決﹗
<id="b" input value=''>當通過變量賦帶有雙引號的值給a時﹐原本的值就顯示不全﹐例如﹕
<id="a" input value="test"temp"> 這時候看到的就只有test了﹗單引號同理﹗
<id="a" input value="">
<id="b" input value=''>
是一样的效果。
<id="a" input value="1">
<id="b" input value='1'>
也是一样的效果。
<id="a" input value="select * from customs where name = 'join'">
正确。
<id="b" input value='select * from customs where name = 'join''>
错误。
<id="b" input value="select * from customs where name="+"'"+"join"+"'">
也可以了。
<id="a" input value="">
要么
<id="b" input value=''>