使用设置属性 (DOM) 更改操作值

Posted

技术标签:

【中文标题】使用设置属性 (DOM) 更改操作值【英文标题】:Change action value using set attribute (DOM) 【发布时间】:2021-06-01 16:40:15 【问题描述】:

我有一个 html 文件,其中包含一个名为 column 的类中的 2 个表单。

 <div class="column">

       <form  action="" method="post" >              
  
       <button type="submit" class="button">ON</button>
                                                    
       </form>
                               
        
      <form action =""  method="post" > 
                                    
      <button type="submit" class="button2">OFF</button>
                                   
      </form>

</div>
                               

我可以使用下面使用的方法更改 2 个表单中的标题等(未包含在此代码中)。但是,我不知道为什么我无法使用相同的原理更改“动作”值。

目标:我想知道如何在表单中选择操作并设置属性

我尝试了什么

const BOX = document.querySelectorAll('.column');  //selects the entire class

const child1 = BOX[0].querySelectorAll('form');  //selects all forms

const formchild = child1[0].querySelector('p :nth-child(2)');  // selects form 1
formchild.setAttribute('action', 'http://xxxxxx//'); 

const formchild2 = child1[1].querySelector('p :nth-child(1)'); // selects form 2
formchild2.setAttribute('action', 'http://xxxxxx//');

【问题讨论】:

你可以试试这个,它可能会解决你在运行时使用javascript设置动作的问题:html.form.guide/html-form/form-action-using-javascript-function 【参考方案1】:

element.querySelectorAll 返回一个数组:因此

const BOX = document.querySelectorAll('.column');  //selects the entire class
// changed it here ??
const child1 = BOX[0].querySelectorAll('form');  //selects all forms

let formchild1 = child1[0].querySelector('p :nth-child(2)');  // selects form 1 
// WHAT IS THIS DOWN HERE, please give additional info
formchild1.setAttribute('action', 'http://xxxxxx//'); 

let formchild2 = child1[1].querySelector('p :nth-child(1)'); // selects form 2
formchild2.setAttribute('action', 'http://xxxxxx//');

应该可以!

【讨论】:

很抱歉,我的代码之前已经有该参数。我打错了。我也为 frmchld 做了一个错字。我已经更新了整个代码。谢谢.. 这对您有帮助吗?如果是,请点赞并标记为已回答! 嘿,我的代码中已经有了它。但是当我在这里写它时,我犯了那个错误。即使使用此代码,它也不起作用。谢谢 嗯,你有答案了吗?【参考方案2】:

我终于找到了解决方案。我为表格设置了一个 ID,它开始工作了

const chld1 = BOX_1[0].querySelector('#form1'); chld1.setAttribute('action','http://')

const chld2 = BOX_1[0].querySelector('#form2'); chld2.setAttribute('action','http://')

【讨论】:

以上是关于使用设置属性 (DOM) 更改操作值的主要内容,如果未能解决你的问题,请参考以下文章

[JS DOM&BOM]自定义属性的操作

使用jQuery操作DOM的常用方法和节点

jQuery属性操作之DOM属性操作

使用jQuery操作节点

Js DOM 操作

JavaScript之DOM(中)