У меня есть два поиска файла JSON, выводя результаты на двух отдельных частях страницы в двух отдельных div. Результаты создаются для циклов, и многие скрытые divs создаются в каждом из двух div div результатов, которые отображаются onclick. Идентификатор id в div # 1 равен «a» + i, где i является счетчиком циклов. Div # 2 похож на скрытый идентификатор «aa» + i. Не должно быть дубликатов идентификаторов. Document.getElementById в функции unhyde() равно нулю, если я прохожу скрытый идентификатор Div, чтобы отобразить его как таким образом:document.getElementById возвращает значение null с использованием переменной для передачи идентификатора для функции onclick
function allWriter() {
var i = "2"; // to simulate one for loop iteration
var theid = "a"+i;
var out = '<div onclick="unhyde('+theid+')">John Smith</div>';
out +='<div id="'+theid+'\" style="display: none;">Read This</div>';
document.getElementById('b').innerHTML = out;
}
function unhyde (theid) {
document.getElementById(theid).style.display="block";
<body>
<div onclick="allWriter()">start</div>
<div id="b"></div>
</body>
Почему? Но следующие работы, но «а» или «аа» должны быть зашиты в функции unhyde(), и я не хочу, чтобы:
function allWriter() {
var i = "2"; // to simulate one for loop iteration
var out = '<div onclick=\"unhyde('+i+')">John Smith</div>';
out +='<div id="a'+i+'" style="display: none;">Read This</div>';
document.getElementById('b').innerHTML = out;
}
function unhyde (i) {
document.getElementById('a'+i).style.display="block";
}
<body>
<div onclick="allWriter()">start</div>
<div id="b"></div>
</body>
Как я могу это сделать, передав весь идентификатор, как переменную и использовать ту же функцию unhyde(), независимо от идентификатора? И почему разница в этих двух примерах? Я бы предпочел не использовать JQuery, но только если нет другого пути.
Если вы посмотрите на сгенерированный код, вы увидите, что он генерирует 'unhyde (a2)', где вы действительно хотите 'unhyde (« a2 »)'. –