Onclick javascript函数不使用';不要在第一次点击时工作
我编写了一段代码,通过单击“p”元素来隐藏/显示div,但在第一次单击时什么也没有发生。Onclick javascript函数不使用';不要在第一次点击时工作,javascript,css,Javascript,Css,我编写了一段代码,通过单击“p”元素来隐藏/显示div,但在第一次单击时什么也没有发生。 只有在第二次单击时,代码才能按预期工作。 我读过一些类似的问题,我知道这可能是一个风格问题。 所以我试着改变风格(不知道自己在做什么),但我并不幸运 我还有另一个问题:“p”元素有时包含一个输入,我不知道如何将它放在div的右下角,但放在其他元素的下面 <!DOCTYPE html> <html> <head> <style>
只有在第二次单击时,代码才能按预期工作。 我读过一些类似的问题,我知道这可能是一个风格问题。
所以我试着改变风格(不知道自己在做什么),但我并不幸运 我还有另一个问题:“p”元素有时包含一个输入,我不知道如何将它放在div的右下角,但放在其他元素的下面
<!DOCTYPE html>
<html>
<head>
<style>
.Class1 {
position:relative;
display: inline-block;
width: 48%;
margin: 3px;
border: 3px solid #CCC;
}
.Class2 {
position:absolute;
bottom:0;
right:0;
border: 1px solid #CCC;
margin:1px;
background: #FFC;
}
.Fields {
clear: both;
border: 1px solid #CCC;
display: inline-block;
margin:3px;
}
.H_p {
border: 1px solid #CCC;
display: inline-block;
}
.Opt {
border: 1px solid #CCC;
display: none;
}
</style>
</head>
<body>
<h2>My test</h2>
<?php
$Divs = array('Div1'=>'Class1',
'Div2'=>'Class1',
'Div3'=>'Class1',
'Div4'=>'Class1',
'Div5'=>'Class1');
$AskToShow=array("Field1"=>"1.1.1", "Field2"=>"1.2.1", "Field3"=>"1.3.1");
foreach ($Divs as $Name=>$Class){
echo '
<div class="'.$Class.'">';
echo $Name.'<br/>';
foreach ($AskToShow as $I_Name=>$Id){
echo '
<label>'.$I_Name.'</label>
<input type="text" id="'.$Id.'" class="Fields"/>';
}
echo '
<p id="Btn_Opt'.$Name.'" class="Class2" >Mostra campi opzionali</p>';
echo '
<div id=Opt'.$Name.' name="Opt'.$Name.'" class="Opt" >';
foreach ($AskToShow as $H_Name=>$Id){
echo'
<p id="H_'.$Id.'" class="H_p">'.$H_Name.'</p>';
}
echo '
</div>';
echo '
</div>';
}
?>
<script>
var MyClass = document.getElementsByClassName("Class2");
var myFunction = function() {
var SenderId = this.id;
var SubId = SenderId.substring(SenderId.indexOf('_')+1)
var SubSH = document.getElementById(SubId);
if (SubSH.style.display == 'none'){
SubSH.style.display = 'inline-block';
}else{
SubSH.style.display = 'none';
}
};
for (var i = 0; i < MyClass.length; i++) {
MyClass[i].addEventListener('click', myFunction, false);
}
</script>
</body>
</html>
.1级{
位置:相对位置;
显示:内联块;
宽度:48%;
保证金:3倍;
边框:3px实心#CCC;
}
.2级{
位置:绝对位置;
底部:0;
右:0;
边框:1px实心#CCC;
保证金:1px;
背景:#FFC;
}
.菲尔德{
明确:两者皆有;
边框:1px实心#CCC;
显示:内联块;
保证金:3倍;
}
胡主席{
边框:1px实心#CCC;
显示:内联块;
}
.选择{
边框:1px实心#CCC;
显示:无;
}
我的测试
var MyClass=document.getElementsByClassName(“Class2”);
var myFunction=function(){
var SenderId=this.id;
var SubId=SenderId.substring(SenderId.indexOf(“”“)+1)
var SubSH=document.getElementById(SubId);
如果(SubSH.style.display=='none'){
SubSH.style.display='inline block';
}否则{
SubSH.style.display='none';
}
};
对于(var i=0;i
请在下面找到工作代码
<!DOCTYPE html>
<html>
<head>
<style>
.Class1 {
position:relative;
display: inline-block;
width: 48%;
margin: 3px;
border: 3px solid #CCC;
}
.Class2 {
position:relative;
bottom:0;
right:0;
border: 1px solid #CCC;
margin:1px;
background: #FFC;
display: inline-block;
float:right;
}
.Fields {
clear: both;
border: 1px solid #CCC;
display: inline-block;
margin:3px;
}
.H_p {
border: 1px solid #CCC;
display: inline-block;
}
.Opt {
border: 1px solid #CCC;
display: none;
}
</style>
</head>
<body>
<h2>My test</h2>
<?php
$Divs = array(
'Div1' => 'Class1',
'Div2' => 'Class1',
'Div3' => 'Class1',
'Div4' => 'Class1',
'Div5' => 'Class1'
);
$AskToShow = array(
"Field1" => "1.1.1",
"Field2" => "1.2.1",
"Field3" => "1.3.1"
);
foreach ($Divs as $Name => $Class) {
echo '
<div class="' . $Class . '">';
echo $Name . '<br/>';
foreach ($AskToShow as $I_Name => $Id) {
echo '
<label>' . $I_Name . '</label>
<input type="text" id="' . $Id . '" class="Fields"/>';
}
echo '
<div id=Opt' . $Name . ' name="Opt' . $Name . '" class="Opt" >';
foreach ($AskToShow as $H_Name => $Id) {
echo '
<p id="H_' . $Id . '" class="H_p">' . $H_Name . '</p>';
}
echo '
</div>';
echo '
<div style="clear:both;"></div>';
echo '
<p id="Btn_Opt' . $Name . '" class="Class2" >Mostra campi opzionali</p>';
echo '
</div>';
}
?>
<script>
var MyClass = document.getElementsByClassName("Class2");
var myFunction = function() {
var SenderId = this.id;
var SubId = SenderId.substring(SenderId.indexOf('_')+1)
var SubSH = document.getElementById(SubId);
if (window.getComputedStyle(SubSH, null).display == 'none'){
SubSH.style.display = 'inline-block';
} else {
SubSH.style.display = 'none';
}
};
for (var i = 0; i < MyClass.length; i++) {
MyClass[i].addEventListener('click', myFunction, false);
}
</script>
</body>
</html>
.1级{
位置:相对位置;
显示:内联块;
宽度:48%;
保证金:3倍;
边框:3px实心#CCC;
}
.2级{
位置:相对位置;
底部:0;
右:0;
边框:1px实心#CCC;
保证金:1px;
背景:#FFC;
显示:内联块;
浮动:对;
}
.菲尔德{
明确:两者皆有;
边框:1px实心#CCC;
显示:内联块;
保证金:3倍;
}
胡主席{
边框:1px实心#CCC;
显示:内联块;
}
.选择{
边框:1px实心#CCC;
显示:无;
}
我的测试
var MyClass=document.getElementsByClassName(“Class2”);
var myFunction=function(){
var SenderId=this.id;
var SubId=SenderId.substring(SenderId.indexOf(“”“)+1)
var SubSH=document.getElementById(SubId);
if(window.getComputedStyle(SubSH,null).display=='none'){
SubSH.style.display='inline block';
}否则{
SubSH.style.display='none';
}
};
对于(var i=0;i
请在下面找到工作代码
<!DOCTYPE html>
<html>
<head>
<style>
.Class1 {
position:relative;
display: inline-block;
width: 48%;
margin: 3px;
border: 3px solid #CCC;
}
.Class2 {
position:relative;
bottom:0;
right:0;
border: 1px solid #CCC;
margin:1px;
background: #FFC;
display: inline-block;
float:right;
}
.Fields {
clear: both;
border: 1px solid #CCC;
display: inline-block;
margin:3px;
}
.H_p {
border: 1px solid #CCC;
display: inline-block;
}
.Opt {
border: 1px solid #CCC;
display: none;
}
</style>
</head>
<body>
<h2>My test</h2>
<?php
$Divs = array(
'Div1' => 'Class1',
'Div2' => 'Class1',
'Div3' => 'Class1',
'Div4' => 'Class1',
'Div5' => 'Class1'
);
$AskToShow = array(
"Field1" => "1.1.1",
"Field2" => "1.2.1",
"Field3" => "1.3.1"
);
foreach ($Divs as $Name => $Class) {
echo '
<div class="' . $Class . '">';
echo $Name . '<br/>';
foreach ($AskToShow as $I_Name => $Id) {
echo '
<label>' . $I_Name . '</label>
<input type="text" id="' . $Id . '" class="Fields"/>';
}
echo '
<div id=Opt' . $Name . ' name="Opt' . $Name . '" class="Opt" >';
foreach ($AskToShow as $H_Name => $Id) {
echo '
<p id="H_' . $Id . '" class="H_p">' . $H_Name . '</p>';
}
echo '
</div>';
echo '
<div style="clear:both;"></div>';
echo '
<p id="Btn_Opt' . $Name . '" class="Class2" >Mostra campi opzionali</p>';
echo '
</div>';
}
?>
<script>
var MyClass = document.getElementsByClassName("Class2");
var myFunction = function() {
var SenderId = this.id;
var SubId = SenderId.substring(SenderId.indexOf('_')+1)
var SubSH = document.getElementById(SubId);
if (window.getComputedStyle(SubSH, null).display == 'none'){
SubSH.style.display = 'inline-block';
} else {
SubSH.style.display = 'none';
}
};
for (var i = 0; i < MyClass.length; i++) {
MyClass[i].addEventListener('click', myFunction, false);
}
</script>
</body>
</html>
.1级{
位置:相对位置;
显示:内联块;
宽度:48%;
保证金:3倍;
边框:3px实心#CCC;
}
.2级{
位置:相对位置;
底部:0;
右:0;
边框:1px实心#CCC;
保证金:1px;
背景:#FFC;
显示:内联块;
浮动:对;
}
.菲尔德{
明确:两者皆有;
边框:1px实心#CCC;
显示:内联块;
保证金:3倍;
}
胡主席{
边框:1px实心#CCC;
显示:内联块;
}
.选择{
边框:1px实心#CCC;
显示:无;
}
我的测试
var MyClass=document.getElementsByClassName(“Class2”);
var myFunction=function(){
var SenderId=this.id;
var SubId=SenderId.substring(SenderId.indexOf(“”“)+1)
var SubSH=document.getElementById(SubId);
if(window.getComputedStyle(SubSH,null).display=='none'){
SubSH.style.display='inline block';
}否则{
SubSH.style.display='none';
}
};
对于(var i=0;i
问题是,当您执行SubSH.style.display
时,您只检查内联样式
,因此某些内容在
中,但您的样式表中有它,因此此方法无法访问它。试着稍微改变一下你的函数——例如
var myFunction = function() {
var SenderId = this.id;
var SubId = SenderId.substring(SenderId.indexOf('_')+1)
var SubSH = document.getElementById(SubId);
var style = window.getComputedStyle(SubSH);
if (style.display == 'none'){
SubSH.style.display = 'inline-block';
}else{
SubSH.style.display = 'none';
}
};
使用
window.getComputedStyle(SubSH)
您正在检查样式,它知道您的所有类和CSE问题是,当您执行SubSH.style.display
时,您只检查内联样式
,因此某些内容是在
中的,但您的样式表中有它,因此此方法无法访问它。试着稍微改变一下你的函数——例如
var myFunction = function() {
var SenderId = this.id;
var SubId = SenderId.substring(SenderId.indexOf('_')+1)
var SubSH = document.getElementById(SubId);
var style = window.getComputedStyle(SubSH);
if (style.display == 'none'){
SubSH.style.display = 'inline-block';
}else{
SubSH.style.display = 'none';
}
};
使用
window.getComputedStyle(SubSH)代码>您正在检查样式,它知道您的所有类和CSSE此代码在语法上不正确。请不要同时问两个问题,试着在之前清理一下,而不是扔掉没有工作的原始页面。请看。您有一个else语句,但没有匹配的if语句?请丢弃php部分并用该php的输出填充它script@HaukurHaf对不起:剪报mistake@Pratansyah我认为这应该是太多的代码。这段代码在语法上是不正确的。请不要同时问两个问题,试着在之前清理一下,而不是扔掉没有工作的原始页面。请看。您有一个else语句,但没有匹配的if语句?请丢弃php部分并用该php的输出填充它script@HaukurHaf对不起:剪报mistake@Pratansyah我认为这应该是太多的代码,所以有两个问题1。style属性仅提供内联样式。如果您想要css样式+内联样式,那么必须使用window.getComputedStyle()2。需要移动底部的p标签并更改c