У меня две формы на моей странице (min & max), которые должны содержать минимальное и максимальное текстовые поля, которые пользователь может добавить. Так что это часть моего кода с этой проблемой.
ПРОБЛЕМА: он отлично работает в Chrome/IExplorer, но в Firefox он не может работать. Проблема в том, что он сообщает об ошибке
ТипError: document.getElementById(...) - null
Ошибка также существует в Chrome, но код работает. Итак, я обнаружил, что это проблема с внутренним html div с идентификаторами K1, H1, K2, H2... Он как-то пуст, независимо от того, что он печатает на странице.
$kx[$j] = $_POST['min'][$j];
$hx[$j] = ($_POST['max'][$j]);
$kxx .= '<div style="visibility:hidden;" id="K'.$j.'">'.$kx[$j].'</div>';
$hxx .= '<div style="visibility:hidden;" id="H'.$j.'">'.$hx[$j].'</div>';
<script type="text/javascript">
var counter = [];
var mxcounter = [];
for(var u=1; u<101; u++) {
counter[u] = parseInt(document.getElementById("K"+u).innerHTML, 10);
mxcounter[u] = parseInt(document.getElementById("H"+u).innerHTML, 10);
}
</script>
Что мне делать?
Убедитесь, что блок сценария выполняется после создания HTML-кода. Выполните скрипт в onLoad.
Вы также можете проверить, что сгенерированные идентификаторы идут от 1 до 100, на всякий случай.
Это приведет к ошибке, если количество элементов div меньше, чем "101", используемых в цикле. Однако, если вы добавляете divs через javascript, вы можете иметь скрытый элемент в форме, чтобы сохранить максимальное количество и увеличить его для каждого нового div.
function add_div() {
// your code to add div element
var max = document.getElementById("maxcount").value;
document.getElementById("maxcount").value = parseInt(max)+1;
}