Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Javascript错误:对象没有方法“getElementById”_Php_Javascript_Html - Fatal编程技术网

Php Javascript错误:对象没有方法“getElementById”

Php Javascript错误:对象没有方法“getElementById”,php,javascript,html,Php,Javascript,Html,我得到一个Javascript错误:对象没有方法“getElementById”。我正在尝试使用一个按钮将选定的元素传输到HTML中的另一个选择框。我到处都找过,但没人能找到适合我的解决方案=\ Javascript <script language="javascript"> function addDivision() { var selected = document.frmSubmit.getElementById("selectedDivisions");

我得到一个Javascript错误:对象没有方法“getElementById”。我正在尝试使用一个按钮将选定的元素传输到HTML中的另一个选择框。我到处都找过,但没人能找到适合我的解决方案=\

Javascript

<script language="javascript">
function addDivision()
{
    var selected = document.frmSubmit.getElementById("selectedDivisions");

    var div = document.frmSubmit.getElementById("divisions");
    var divId = div.options[div.selectedIndex].value;
    var divText = div.options[div.selectedIndex].text;

    var newOption = document.frmSubmit.createElement(divId);
    newOption.text = divText;

    selected.add(newOption,null);
}
</script>
HTML


发生此问题是因为您试图从节点元素使用getElementById,而此方法属于文档。仔细想想,这是合乎逻辑的:id在页面中应该是唯一的,所以使用dom元素按id过滤元素是没有意义的

因此,如果您从以下位置更改:

document.frmSubmit.getElementById("selectedDivisions");
致:

一切都应按预期进行

作为旁注,节点元素支持getElementsByTagName和getElementsByClassName——它们用于选择与指定标记/类名称匹配的所有子节点

检查API参考:

您试图使用的函数属于DOMDocument,而不是DOMEElement

document.getElemendById

代码的有效版本实际上是:

document.getElementById选择的分区


注意:ID属性应该是唯一的,这意味着如果文档中有两个或多个元素具有相同的ID,则会考虑该页面。

我会尝试使用jQuery进行此操作。您只需从一个select中获取所需的元素并将其附加到另一个select中即可

    $('#selectedDivisions').append($('#divisions'));
表单对象的类型为HTMLFormElement。如前所述,您可以在文档上调用getElementById,但不能在元素上调用,包括在HTMLFormElement上

但是一个表单包含元素,并且给定一个HTML表单元素对象,人们希望访问该表单元素中的特定元素是合理的,那么如何做到这一点呢

嗯,您的HTMLFormElement提供了一个名为的属性。访问HTMLFormElement上的元素会生成一个包含在表单中找到的元素的列表。HTMLFormControlsCollection是从类型派生的。HTMLFormControlsCollection有一个只读属性和两个方法

属性是length,它返回在集合中找到的元素的计数,在本例中,这些元素将是表单元素中的元素

这两种方法是:

itemindex-返回指定的从零开始的索引处的特定节点。如果索引超出范围,则返回null。 namedItemid-返回其ID或名称(作为备用项)与ID指定的字符串匹配的特定节点。仅在HTML中,并且仅当引用的元素支持name属性时,才作为最后手段进行名称匹配。如果给定id/名称不存在节点,则返回null。 因此,如果一个表单对象的类型为HTMLFormElement,那么解决方案是访问该对象的elements属性,使用要从HTMLFormElement检索的元素的id调用该对象的namedItem id

语法是:

let element_obj = form_obj.elements.namedItem( id )

其中form_obj是您的HTMLFormElement,id是您要访问的表单中元素的id。

id是单数,您不能有多个具有相同id的元素。感谢您的快速回复!现在我得到一个错误:无法读取属性'value'未定义。我知道我给了每个条目一个值,这是一个错误,让我首先把frmSubmit放在那里。正如我所说的,你不能从元素中使用getElementById,因为它不起作用,所以你应该使用document.getElementById而不是document..getElementById,它也包括var div。
    $('#selectedDivisions').append($('#divisions'));
let element_obj = form_obj.elements.namedItem( id )