我需要在某些元素之后访问所有元素以更改某些属性。我知道有nextAll()但我不能使用jquery。
具体来说,我需要从输入中更改标签文本和名称属性。
<div class="row respuesta">
<div class="form-group col-md-12">
<label>Respuesta 1:</label>
<div class="input-group">
<input class="form-control" name="respuesta1" onblur="comprobarInputVacio(event)" type="text"/>
<span class="input-group-btn"></span>
<span class="input-group-btn"></span>
<span class="input-group-btn"></span>
</div>
</div>
</div>
<div class="row respuesta">
<div class="form-group col-md-12">
<label>Respuesta 2:</label>
<div class="input-group">
<input class="form-control" name="respuesta2" onblur="comprobarInputVacio(event)" type="text"/>
<span class="input-group-btn"></span>
<span class="input-group-btn"></span>
<span class="input-group-btn"></span>
</div>
</div>
</div>
<div class="row respuesta">
<div class="form-group col-md-12">
<label>Respuesta 3:</label>
<div class="input-group">
<input class="form-control" name="respuesta3" onblur="comprobarInputVacio(event)" type="text"/>
<span class="input-group-btn"></span>
<span class="input-group-btn"></span>
<span class="input-group-btn"></span>
</div>
</div>
</div>
感谢您的帮助。
答案 0 :(得分:3)
答案 1 :(得分:-1)
根据您提供的此代码,这可能有助于您指明正确的方向。
此功能需要:
var containers = document.querySelectorAll(".respuesta");
var response2Container = Array.prototype.find.call(containers, function (container) {
return container.querySelector("input[name='respuesta2']") !== null;
});
function applyAfterElement(elems, afterElem, fn) {
var after = false;
for (let i = 0; i < elems.length; i++) {
let elem = elems[i];
if (after) {
fn(elem, i);
}
else if (elem === afterElem) {
after = true;
}
}
}
applyAfterElement(containers, response2Container, function (elem, orgIndex) {
var label = elem.querySelector("label");
var input = elem.querySelector("input");
label.innerText = "Updated Respuesta Label:";
input.setAttribute("name", "updated" + input.name);
});
<div class="row respuesta">
<div class="form-group col-md-12">
<label>Respuesta 1:</label>
<div class="input-group">
<input class="form-control" name="respuesta1" onblur="comprobarInputVacio(event)" type="text" />
<span class="input-group-btn"></span>
<span class="input-group-btn"></span>
<span class="input-group-btn"></span>
</div>
</div>
</div>
<div class="row respuesta">
<div class="form-group col-md-12">
<label>Respuesta 2:</label>
<div class="input-group">
<input class="form-control" name="respuesta2" onblur="comprobarInputVacio(event)" type="text" />
<span class="input-group-btn"></span>
<span class="input-group-btn"></span>
<span class="input-group-btn"></span>
</div>
</div>
</div>
<div class="row respuesta">
<div class="form-group col-md-12">
<label>Respuesta 3:</label>
<div class="input-group">
<input class="form-control" name="respuesta3" onblur="comprobarInputVacio(event)" type="text" />
<span class="input-group-btn"></span>
<span class="input-group-btn"></span>
<span class="input-group-btn"></span>
</div>
</div>
</div>
<div class="row respuesta">
<div class="form-group col-md-12">
<label>Respuesta 4:</label>
<div class="input-group">
<input class="form-control" name="respuesta4" onblur="comprobarInputVacio(event)" type="text" />
<span class="input-group-btn"></span>
<span class="input-group-btn"></span>
<span class="input-group-btn"></span>
</div>
</div>
</div>
答案 2 :(得分:-1)
这就是我最终做的,甚至看起来有点脏。 (无法正确缩进该元素缩进错误)
function borrarUnaRespuesta(event){
numRes--;
var aBorrar = event.currentTarget.parentNode.parentNode.parentNode.parentNode;
var proximoLabel = aBorrar.firstChild.firstChild.textContent;
var proximoNameAtt = aBorrar.firstChild.firstChild.nextSibling.firstChild.getAttribute("name");
var elementoPosterior = aBorrar.nextSibling;
aBorrar.parentNode.removeChild(aBorrar);
recolocarRespuestas(elementoPosterior,proximoLabel,proximoNameAtt);
}
//coloco bien las respuestas despues de borrar una en concreto
function recolocarRespuestas(elementoPosterior,proximoLabel,proximoNameAtt){
var anteriorLabel = "";
var anteriorNameAtt = "";
while(elementoPosterior.nodeName != "INPUT"){
anteriorLabel = elementoPosterior.firstChild.firstChild.textContent;
elementoPosterior.firstChild.firstChild.textContent = proximoLabel;
anteriorNameAtt = elementoPosterior.firstChild.firstChild.nextSibling.firstChild.getAttribute("name");
elementoPosterior.firstChild.firstChild.nextSibling.firstChild.setAttribute("name",proximoNameAtt);
proximoNameAtt = anteriorNameAtt;
proximoLabel = anteriorLabel;
elementoPosterior = elementoPosterior.nextSibling;
}
//this just places correctly the answers
checkNumRespuestas();
}