请问如何修改form的action。----奇怪的是当form里有input的名字也是action的时候 现在的问题是修改别人的东西,所以要做到“input的名字不要用action”又要去动不少的手脚,可能不大现实 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 试试<html><body><form name=aaa><input name=action value=aaaa></form></body></html><script language=javascript>aaa.setAttribute("action","b.htm");alert(aaa.outerHTML);alert(aaa['action'].value);</script> fason(【阿信】):出现了更严重的问题:IE死掉了<html><body><form name=aaa action=a.htm><input name=action value=aaaa></form></body></html><script language=javascript>aaa.removeAttribute("action");aaa.setAttribute("action","b.htm");alert(aaa.outerHTML);alert(aaa['action'].value);</script> document.forms["aaa"].setAttribute("action","b.htm");document.forms["aaa"].elements["aaa"].value="xxxx";以不会产生歧义的方式引用dom对象和属性. <SCRIPT>// modify form actionform1.action = "dest.htm";// modify form elements valueform1.action.value = "input value";</SCRIPT> 回复人: fason(【阿信】) ( ) 信誉:217 2003-05-13 18:23:00 得分:0 我自己的试过不会啊,上面的确实"死掉了"--------------------------在您的代码里,form是这样的<form name=aaa>但是现在出现问题的时候,form是这样的<form name=aaa action=a.htm>所以我按照您的思路,加了一句aaa.removeAttribute("action");结果IE就死掉了。 yonghengdizhen(灌水专业高才生[休学中]):JK刚才按照您的做法试了试,还是不行,代码如下:<html><body><form action=a.htm name=aaa><input name=action value=aaaa></form></body></html><script language=javascript>document.forms["aaa"].setAttribute("action","b.htm");alert(aaa.outerHTML);alert(aaa.action.value);</script> cm4ever(一肚子坏水) :JK已试过,用form1.action = "dest.htm"不能解决问题,代码如下:<html><body><form action=a.htm name=aaa><input name=action value=aaaa></form></body></html><script language=javascript>aaa.action = "dest.htm";alert(aaa.outerHTML);alert(aaa.action.value);</script> <HTML><HEAD><STYLE>DIV { font-size: 9pt }</STYLE><SCRIPT language=javascript>// 用此标志更换表单的formvar flag = true;function setAction(){ // 设定 表单的action form1.setAttribute('action', flag ? 'ccc.htm' : 'ddd.htm', 0); // 转换flag flag = !flag; // 显示整个form的html代码, 以查看结果 show.innerText += '\n\n' + '\n\n' + div.innerHTML;}function setOnloadCode(){ // 显示整个form的html代码, 以查看结果 show.innerText = '\n\n' + div.innerHTML; // 设定 表单的action form1.setAttribute('action', 'bbb.htm', 0); // 设定 表单的元素action的值 form1.action.value = "input value"; // 显示整个form的html代码, 以查看结果 show.innerText += '\n\n' + div.innerHTML;}</SCRIPT></HEAD><BODY ONLOAD="setOnloadCode()"><!--存放表单的DIV--><DIV ID="div"><FORM NAME='form1'><INPUT NAME=action VALUE=aaaa ACTION='aaa.htm'><INPUT TYPE='button' ONCLICK="setAction()" VALUE="set form action"></FORM></DIV><!--用来显示结果的DIV--><DIV id="show"></DIV></BODY></HTML> 一点注意:1.我认为不在函数中运行script代码是不好的习惯.因为此时的页面可能尚未加载完全.具体原因I don't know我的做法:...<SCTIPT>function setOnloadCode(){ // some initialize code}</SCRIPT>...<!—在这里调用函数,进行初始化动作--><BODY ONLOAD="setOnloadCode()"> 上面的代码不起作用,原因在于form的html代码中有action=''!!!<HTML><HEAD><STYLE>DIV { font-size: 9pt }</STYLE><SCRIPT language=javascript>// 用此标志更换表单的formvar flag = true;/** * Method 设定窗体的action */function setAction(){ // 设定 表单的action form1.setAttribute('action', flag ? 'ccc.htm' : 'ddd.htm', 0); // 转换flag flag = !flag; // 显示整个form的html代码, 以查看结果 div.innerText += '\n\n' + form1.outerHTML;}/** * Method 页面初始化函数 */function setOnloadCode(){ // 显示整个form的html代码, 以查看结果 div.innerText = '\n\n' + form1.outerHTML; // 设定 表单的action form1.setAttribute('action', 'bbb.htm', 0); // 设定 表单的元素action的值 form1.action.value = "input value"; // 显示整个form的html代码, 以查看结果 div.innerText += '\n\n' + form1.outerHTML;}</SCRIPT></HEAD><BODY ONLOAD="setOnloadCode()"><!--注意!!!窗体的html代码中不能有 action=''--><FORM NAME='form1'><INPUT NAME=action VALUE=aaaa><INPUT TYPE='button' ONCLICK="setAction()" VALUE="set form action"></FORM><!--用来显示结果的DIV--><DIV id="div"></DIV></BODY></HTML> cm4ever(一肚子坏水) :参见回复:“ 回复人: JK_10000(JK1) ( ) 信誉:111 2003-5-14 9:23:10 得分:0 ”不过可以用你的方法(在onload里添加action)解决JK目前实际遇到的问题。 <form id="a" action="des"><input name="action" value="a"></form><script>alert(a.attributes["action"].value);</script> <form id="a" action="runmin"><input name="action" value="a"></form><script>alert(a.attributes["action"].value);alert(a.action.value);</script> to runmin(★★★★★) :想不到还有attributes这个Collections,强! 哈哈,这个是DOM支持的基本的东西,如果你觉得没有办法做什么了,DOM是最后的选择。 runmin(★★★★★) :果然管用JK手头的参考书里也没有attributes这个collections。请问你是从哪里找到的? runmin(★★★★★) :可否把宝典共享 to JK_10000(JK1) : htmlref.chm中有.你有这个文件吗? cm4ever(一肚子坏水):JK看的也是这个文件啊,版本是4.74.8702,里面没有这个collections;不知你们用的是哪个版本的? <html><body><form action=a.htm name=aaa><input name=action value=aaaa></form></body></html><script language=javascript>aaa.mergeAttributes(document.createElement("<form action=test.htm>"))alert(aaa.outerHTML);alert(aaa.action.value);</script> 。宝典在我脑袋里啊,我也不知道怎么,看到你的问题就想到attributes了,可能是XML解析多了的结果吧。 http://runmin.vicp.net/DownLoad/CHMS/HTMLREF.CHM这个帮助里也有讲的,但是我没看它,我想到方法后,才看这个,一看果然有attributes。 其实IE的HTML DOM跟MS的xml dom很相似的,只是内容上比XML DOM丰富了很多,毕竟HTML标签是死的啦。 关于这个的完整方法。<form id="a" action="a.asp" target="_blank"><input name="action" value="54"></form><script>alert(a.attributes["action"].value);alert(a.elements["action"].value);alert(a.attributes.action.value);alert(a.elements.action.value);</script> runmin(★★★★★) 也有马甲啊?? * attributes集合不包括expando属性(这个我也没用过)* attributes集合不提供style对象 (这个没多大所谓了)* 不同于其他dhtml集合,attributes集合是静态的,对象属性的修改不能通过该对象attributes集合的现有参考自动反应。(这个比较讨厌)--《动态HTML参考和开发应用大全》 把你的aaa.setAttribute("action","b.htm");这句话换成:document.aaa.action = "b.htm" ;就可以了这样你的form中的action的值就转换了;如果你要改变名为action的input框内的值,你可以写:document.aaa.action.value = "bbbbb" ; 正则表达式分割中文 在IE7下如果弹出窗口~! 解惑..牛人可以帮我下吗? 关于firefox浏览器的问题, 网页上图片提示工具的问题! 为什么超出了也不显示 滚动条 !!!!!!!!!!!!!!!!!!!! 在设计网页时,如何做一个会员区 请教各位进度条的做法!(100分求教) 救助! 网站防注入攻击,求指导。 怎么写上传,下载的代码 怎样在客户端读cookies
<html><body>
<form name=aaa>
<input name=action value=aaaa>
</form>
</body>
</html>
<script language=javascript>
aaa.setAttribute("action","b.htm");
alert(aaa.outerHTML);
alert(aaa['action'].value);
</script>
出现了更严重的问题:IE死掉了
<html><body>
<form name=aaa action=a.htm>
<input name=action value=aaaa>
</form>
</body>
</html>
<script language=javascript>
aaa.removeAttribute("action");
aaa.setAttribute("action","b.htm");
alert(aaa.outerHTML);
alert(aaa['action'].value);
</script>
document.forms["aaa"].elements["aaa"].value="xxxx";
以不会产生歧义的方式引用dom对象和属性.
// modify form action
form1.action = "dest.htm";// modify form elements value
form1.action.value = "input value";
</SCRIPT>
我自己的试过不会啊,上面的确实"死掉了"
--------------------------在您的代码里,form是这样的
<form name=aaa>
但是现在出现问题的时候,form是这样的
<form name=aaa action=a.htm>
所以我按照您的思路,加了一句
aaa.removeAttribute("action");
结果IE就死掉了。
JK刚才按照您的做法试了试,还是不行,代码如下:
<html><body>
<form action=a.htm name=aaa>
<input name=action value=aaaa>
</form>
</body></html>
<script language=javascript>
document.forms["aaa"].setAttribute("action","b.htm");
alert(aaa.outerHTML);
alert(aaa.action.value);
</script>
JK已试过,用form1.action = "dest.htm"不能解决问题,
代码如下:<html><body>
<form action=a.htm name=aaa>
<input name=action value=aaaa>
</form>
</body></html>
<script language=javascript>
aaa.action = "dest.htm";
alert(aaa.outerHTML);
alert(aaa.action.value);
</script>
<HEAD>
<STYLE>
DIV { font-size: 9pt }
</STYLE>
<SCRIPT language=javascript>// 用此标志更换表单的form
var flag = true;function setAction()
{
// 设定 表单的action
form1.setAttribute('action', flag ? 'ccc.htm' : 'ddd.htm', 0);
// 转换flag
flag = !flag;
// 显示整个form的html代码, 以查看结果
show.innerText += '\n\n' + '\n\n' + div.innerHTML;
}function setOnloadCode()
{
// 显示整个form的html代码, 以查看结果
show.innerText = '\n\n' + div.innerHTML;
// 设定 表单的action
form1.setAttribute('action', 'bbb.htm', 0); // 设定 表单的元素action的值
form1.action.value = "input value";
// 显示整个form的html代码, 以查看结果
show.innerText += '\n\n' + div.innerHTML;
}
</SCRIPT>
</HEAD>
<BODY ONLOAD="setOnloadCode()">
<!--存放表单的DIV-->
<DIV ID="div">
<FORM NAME='form1'>
<INPUT NAME=action VALUE=aaaa ACTION='aaa.htm'>
<INPUT TYPE='button' ONCLICK="setAction()" VALUE="set form action">
</FORM>
</DIV>
<!--用来显示结果的DIV-->
<DIV id="show"></DIV>
</BODY>
</HTML>
.
.
.
<SCTIPT>
function setOnloadCode()
{
// some initialize code
}
</SCRIPT>
.
.
.
<!—在这里调用函数,进行初始化动作-->
<BODY ONLOAD="setOnloadCode()">
<HEAD>
<STYLE>
DIV { font-size: 9pt }
</STYLE>
<SCRIPT language=javascript>// 用此标志更换表单的form
var flag = true;/**
* Method 设定窗体的action
*/
function setAction()
{
// 设定 表单的action
form1.setAttribute('action', flag ? 'ccc.htm' : 'ddd.htm', 0);
// 转换flag
flag = !flag;
// 显示整个form的html代码, 以查看结果
div.innerText += '\n\n' + form1.outerHTML;
}/**
* Method 页面初始化函数
*/
function setOnloadCode()
{
// 显示整个form的html代码, 以查看结果
div.innerText = '\n\n' + form1.outerHTML;
// 设定 表单的action
form1.setAttribute('action', 'bbb.htm', 0); // 设定 表单的元素action的值
form1.action.value = "input value";
// 显示整个form的html代码, 以查看结果
div.innerText += '\n\n' + form1.outerHTML;
}
</SCRIPT>
</HEAD>
<BODY ONLOAD="setOnloadCode()">
<!--注意!!!窗体的html代码中不能有 action=''-->
<FORM NAME='form1'>
<INPUT NAME=action VALUE=aaaa>
<INPUT TYPE='button' ONCLICK="setAction()" VALUE="set form action">
</FORM>
<!--用来显示结果的DIV-->
<DIV id="div"></DIV>
</BODY>
</HTML>
参见回复:“ 回复人: JK_10000(JK1) ( ) 信誉:111 2003-5-14 9:23:10 得分:0 ”
不过可以用你的方法(在onload里添加action)解决JK目前实际遇到的问题。
<input name="action" value="a">
</form>
<script>
alert(a.attributes["action"].value);
</script>
<input name="action" value="a">
</form>
<script>
alert(a.attributes["action"].value);
alert(a.action.value);
</script>
想不到还有attributes这个Collections,强!
果然管用
JK手头的参考书里也没有attributes这个collections。
请问你是从哪里找到的?
可否把宝典共享
JK看的也是这个文件啊,版本是4.74.8702,里面没有这个collections;
不知你们用的是哪个版本的?
<form action=a.htm name=aaa>
<input name=action value=aaaa>
</form></body></html>
<script language=javascript>
aaa.mergeAttributes(document.createElement("<form action=test.htm>"))
alert(aaa.outerHTML);
alert(aaa.action.value);
</script>
<input name="action" value="54">
</form><script>alert(a.attributes["action"].value);
alert(a.elements["action"].value);alert(a.attributes.action.value);
alert(a.elements.action.value);</script>
* attributes集合不提供style对象 (这个没多大所谓了)
* 不同于其他dhtml集合,attributes集合是静态的,对象属性的修改不能通过该对象attributes集合的现有参考自动反应。(这个比较讨厌)--《动态HTML参考和开发应用大全》
document.aaa.action = "b.htm" ;就可以了
这样你的form中的action的值就转换了;
如果你要改变名为action的input框内的值,你可以写:
document.aaa.action.value = "bbbbb" ;