JavaScript:找不到元素

标签 javascript php html forms submit

我遇到了一个奇怪的问题:我正在尝试获取 <form>来自 javascript 的元素,但我无法。

我的html代码是由php动态创建的:

<form id="form_color_{$color->id}" action="?com=saveColor" method="POST">   
    <!--some input elements-->
    <a href="javascript:saveColor({$color->id})"> 
        <img src="{$webSiteUrl}assets/img/admin/floppy_disk_24.png" /> 
        <span> Save</span> 
    </a>
</form>

因此页面将包含各种form_color_形式如form_color_1 form_color_2等等...

当单击图像时,将调用此 javascript 函数:

function saveColor(id){
    $("#form_color_"+id).submit();
}

函数正确接收了 id 参数,但没有提交表单。

如果我尝试获取表单元素,我会得到 null

function saveColor(id){
    form = 'form_color_'+id;
    var doc = document.getElementById(form);
    alert(doc);
    $("#form_color_1").submit();
}

该功能与其他形式完美配合。

这是 php 生成的代码示例:

<form id="form_color_1" action="?com=saveColor" method="POST">
    <!--some input elements-->
    <a  href="javascript:saveColor(1)"> 
        <img imgc="http://10.10.10.46/c5liveOnLine/assets/img/admin/floppy_disk_24.png" /> 
        <span> Save</span> 
    </a>
</form>

我错过了什么?

最佳答案

你所拥有的应该可以工作,除非页面上有另一个表单具有相同的id(这会很糟糕)。

但请注意,您根本不需要 id 来实现此目的,因此,如果 id 是问题所在,那么解决方案就是不要使用它们。只需给您的触发元素一个类即可:

<form action="?com=saveColor" method="POST">   
    <!--some input elements-->
    <a class="submit-form"> 
        <img src="{$webSiteUrl}assets/img/admin/floppy_disk_24.png" /> 
        <span> Save</span> 
    </a>
</form>

...然后使用处理程序提交包含该元素的表单:

$(document).on("click", ".submit-form", function() {
    $(this).closest("form").submit();
});

我使用了委托(delegate)处理程序,因为我没有看到任何不这样做的理由,这意味着您可以根据需要动态添加和删除表单。

<小时/>

但请注意,您根本不需要 JavaScript 来完成此操作,除非您要做的不仅仅是提交表单。 button 元素可以设置为您想要的任何外观,它们的默认操作是提交它们所在的表单。因此:

<form action="?com=saveColor" method="POST">   
    <!--some input elements-->
    <button> 
        <img src="{$webSiteUrl}assets/img/admin/floppy_disk_24.png" /> 
        <span> Save</span> 
    </button>
</form>

只需使用 CSS 使按钮看起来像您想要的样子。

下面是一个将按钮样式设置为链接的示例:

button {
  border: none;
  background-color: transparent;
  color: blue;
}
button:hover {
  text-decoration: underline;
}
<form action="?com=saveColor" method="POST">
  <!--some input elements-->
  <button>
    <img src="{$webSiteUrl}assets/img/admin/floppy_disk_24.png" />
    <span> Save</span> 
  </button>
</form>

关于JavaScript:找不到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38309208/

相关文章:

javascript - 数组中的差/和以检查生成的导致另一个数组的两个数字

javascript - 在 Javascript 中双重触发引用 self 的函数

javascript - 自定义模态框的关闭按钮

php - 比较本地和 ftp 文件

php - 正则表达式 php 中的变量

html - 当帖子标题中断到下一行或堆栈时布局中断

javascript - 在 Angular 中使用 ngrx 时捕获超时错误

java - 关闭android程序立即运行json中的应用程序

html - 如何在 Ruby on Rails 中将 HTML 标记放入 <label> 中?

html - 100% DIV 中的顽固固定 DIV