Primeiro, vamos dar uma olhada em um exemplo:
A cópia do código é a seguinte:
<Form Name = "BuyerForm" Method = "Post" Action = "/Mysport/Control/User/List.do">
<input type = "caixa de seleção" id = "nomes de usuário" value = "testTest"> testTest <br>
<input type = "Caixa de seleção" name = "userNames" value = "testTest"> testTest <br>
<input type = "text" id = "nomes de usuário" value = "testTest"> testTest <br>
</morm>
Document.Forms [0] Quando existe um formulário de formulário ou formulários múltiplos na página HTML, ele retorna uma matriz de formulário do tipo NodeList.
document.forms [0] .usernames, aqui os nomes de usuário podem ser o valor de ID ou nome, onde esses dois atributos são equivalentes. Além disso, não distingue se um componente é uma caixa de texto, uma caixa de rádio ou uma caixa de seleção.
Neste momento, precisamos distinguir entre duas situações .
Quando um ID de entrada ou nome é 'Nomes de usuário', document.forms [0] .usernames retorna um componente de entrada específico. Se for operado, deve ser usado de acordo com o método de operação de componente específico.
No momento, alerta (document.forms [0] .usernames.length) retorna indefinidos porque o componente de entrada não possui a propriedade Length.
Quando houver dois ou mais IDs de entrada ou nome 'nomes de usuário', document.forms [0] .usernames Retorna a matriz NodElist. Neste momento,
alert (document.forms [0] .usernames.length) retornará o comprimento da matriz. No exemplo acima, o valor de retorno é 3.
Portanto, ao usar o JS para selecionar tudo, considere a situação em que há uma e várias caixas de seleção com o mesmo nome.
A cópia do código é a seguinte:
function allSelect () {
var form = document.forms [0];
var state = form.AllSelectBox.Checked;
var comprimento = form.usernames.length; // Quando há dois ou mais nomes de caixas de seleção que são nomes de usuário, o comprimento da matriz é retornado
// Quando há um nome de caixa de seleção que é nomes de usuário, form.usernames retorna um objeto de caixa de seleção, não uma matriz, então sua propriedade de comprimento é indefinida
se (comprimento) {// em javascript, desde que a condição julgada seja 0, nula ou indefinida, é considerada falsa e outros casos são considerados verdadeiros
for (var i = 0; i <comprimento; i ++) {
form.usernames [i] .CHecked = state;
}
}
outro{
form.UserNames.CHecked = State;
}
}
Há um ID do componente de 'nomes de usuário' ou vários IDs de componentes são 'nomes de usuário', document.getElementById ('nomes de usuário') retorna o valor retornado por um componente de formulário. Quando vários IDs de componentes são 'nomes de usuário', o primeiro ID do componente é 'nomes de usuário'.
Existe um nome de componente 'nomes de usuário' ou vários nomes de componentes 'nomes de usuário', document.getElementsByName () retorna a matriz HTMLCollection. Observe a diferença do document.getElementsByTagName (), que recebe a matriz de acordo com a categoria de tag.
var nomes = document.getElementsByTagName ("nomes de usuário"), alerta (nomes [0]) O resultado retornado aqui é indefinido. Eu costumava misturar o nome com bytagname e nenhuma tag começa com nomes de usuário. <nomes de usuário Value = ''> </SoperNames> Isso não existe.
No entanto, o retorno do getElementsByTagName ainda é uma coleção de matriz, que não contém nenhum conteúdo, os nomes [0] não existe, portanto o retorno é indefinido, porque quando o intervalo de matriz é excedido, o valor indefinido aparece.
var teste = {'0', '1', '2',}; alert (teste [3]); retorna indefinido.