Функция Javascript для установки атрибута «display» работает в некоторых ситуациях, а не в других

В моей программе я либо отображаю, либо не отображаю определенные элементы на основе выбора пользователем набора переключателей. Я использую атрибут «onclick» для вызова функции Javascript «hideshow (e, x)», которая принимает в качестве первого аргумента имя класса элементов, которые будут отображаться / не отображаться, а в качестве второго аргумента — «none» или ‘в соответствии’. Кажется, это работает нормально.

Но иногда я уже знаю, какие элементы должны отображаться, поэтому я не отображаю переключатели и просто хочу вызвать hideshow (e, x) напрямую. Поместив оператор ALERT в функцию, я знаю, что функция на самом деле вызывается и получает правильные параметры. Тем не менее, видимость элементов не меняется.

Может кто-нибудь объяснить это, и скажите мне, как это исправить?

Вот код Я использую переменную $ isperson, чтобы определить, является ли радио:

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Visibility Test</title>
<script>
function hideshow(element,x){
alert ("in hideshow, element:"+element+", x:"+x);
$(element).css("display",x);
var telement = element+"-";
var tx="";
if(x=="none"){tx="inline";}else{tx="none";}
$(telement).css("display",tx);
}
</script>
</head>
<body>
<?
$isperson=1;
if($isperson){
echo " ready to use hideshow <br>";
ob_start();
echo "<script>setTimeout(hideshow('.personInput','inline'),1)</script>";
ob_end_flush();
}else{
echo "<input type='radio' name='bizorper' value='business' onclick=\"" . "hideshow('.personInput','none')" . "\" id='business' checked> Business/organization";
echo "<input type='radio' name='bizorper' value='person' onclick=\"" . "hideshow('.personInput','inline')" . "\" id='person'> person <p>";
}
?>

<p class="personInput" style="display: none"> Normally doesn't display if radio button is 'business', but should if radio button is 'person' or $isperson=1<p></p>

<p class="personInput-" style="display: inline">Normally Displays, unless radio button is 'person' or $isperson=1</p>
<p class="personInput" style="display: none">Normally doesn't display 2;</p>

</body>
</html>

1

Решение

Поместите код PHP, который выводит JavaScript ниже элементы, которые должны быть отображены / скрыты.

Ваша функция выполняется до визуализации элементов. Вы включили тайм-аут, но он установлен только на 1 миллисекунду. Перемещение сценария должно позволить вам полностью избавиться от таймаута.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector