现在的问题是修改别人的东西,所以要做到“input的名字不要用action”又要去动不少的手脚,可能不大现实

解决方案 »

  1.   

    试试
    <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>
      

  2.   

    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>
      

  3.   

    document.forms["aaa"].setAttribute("action","b.htm");
    document.forms["aaa"].elements["aaa"].value="xxxx";
    以不会产生歧义的方式引用dom对象和属性.
      

  4.   

    <SCRIPT>
    // modify form action
    form1.action = "dest.htm";// modify form elements value
    form1.action.value = "input value";
    </SCRIPT>
      

  5.   

    回复人: fason(【阿信】) ( ) 信誉:217  2003-05-13 18:23:00  得分:0 
    我自己的试过不会啊,上面的确实"死掉了"
    --------------------------在您的代码里,form是这样的
    <form name=aaa>
    但是现在出现问题的时候,form是这样的
    <form name=aaa action=a.htm>
    所以我按照您的思路,加了一句
    aaa.removeAttribute("action");
    结果IE就死掉了。  
     
      

  6.   

    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>
      

  7.   

    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>
      

  8.   

    <HTML>
    <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>
      

  9.   

    一点注意:1.我认为不在函数中运行script代码是不好的习惯.因为此时的页面可能尚未加载完全.具体原因I don't know我的做法:
    .
    .
    .
    <SCTIPT>
    function setOnloadCode()
    {
    // some initialize code
    }
    </SCRIPT>
    .
    .
    .
    <!—在这里调用函数,进行初始化动作-->
    <BODY ONLOAD="setOnloadCode()">
      

  10.   

    上面的代码不起作用,原因在于form的html代码中有action=''!!!<HTML>
    <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>
      

  11.   

    cm4ever(一肚子坏水) :
    参见回复:“ 回复人: JK_10000(JK1) ( ) 信誉:111  2003-5-14 9:23:10  得分:0 ”
    不过可以用你的方法(在onload里添加action)解决JK目前实际遇到的问题。
      

  12.   

    <form id="a" action="des">
    <input name="action" value="a">
    </form>
    <script>
    alert(a.attributes["action"].value);
    </script>
      

  13.   

    <form id="a" action="runmin">
    <input name="action" value="a">
    </form>
    <script>
    alert(a.attributes["action"].value);
    alert(a.action.value);
    </script>
      

  14.   

    to runmin(★★★★★) :
    想不到还有attributes这个Collections,强!
      

  15.   

    哈哈,这个是DOM支持的基本的东西,如果你觉得没有办法做什么了,DOM是最后的选择。
      

  16.   

    runmin(★★★★★) :
    果然管用
    JK手头的参考书里也没有attributes这个collections。
    请问你是从哪里找到的?
      

  17.   

    runmin(★★★★★) :
    可否把宝典共享
      

  18.   

    to JK_10000(JK1) : htmlref.chm中有.你有这个文件吗?
      

  19.   

    cm4ever(一肚子坏水):
    JK看的也是这个文件啊,版本是4.74.8702,里面没有这个collections;
    不知你们用的是哪个版本的?
      

  20.   

    <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>
      

  21.   

    。宝典在我脑袋里啊,我也不知道怎么,看到你的问题就想到attributes了,可能是XML解析多了的结果吧。
      

  22.   

    http://runmin.vicp.net/DownLoad/CHMS/HTMLREF.CHM这个帮助里也有讲的,但是我没看它,我想到方法后,才看这个,一看果然有attributes。
      

  23.   

    其实IE的HTML DOM跟MS的xml dom很相似的,只是内容上比XML DOM丰富了很多,毕竟HTML标签是死的啦。
      

  24.   

    关于这个的完整方法。<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> 
      

  25.   

    runmin(★★★★★) 也有马甲啊??
      

  26.   

    * attributes集合不包括expando属性(这个我也没用过)
    * attributes集合不提供style对象 (这个没多大所谓了)
    * 不同于其他dhtml集合,attributes集合是静态的,对象属性的修改不能通过该对象attributes集合的现有参考自动反应。(这个比较讨厌)--《动态HTML参考和开发应用大全》
      

  27.   

    把你的aaa.setAttribute("action","b.htm");这句话换成:
    document.aaa.action = "b.htm" ;就可以了
    这样你的form中的action的值就转换了;
    如果你要改变名为action的input框内的值,你可以写:
    document.aaa.action.value = "bbbbb" ;