Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有关详细信息,请单击javascript onclick_Javascript_Onclick_Appendchild - Fatal编程技术网

有关详细信息,请单击javascript onclick

有关详细信息,请单击javascript onclick,javascript,onclick,appendchild,Javascript,Onclick,Appendchild,我想列一个清单。单击列表中的每个项目时,将显示说明。现在我的代码只显示项目,当我单击一个项目时,会显示所有项目的描述。有人能帮我解决这个问题吗 <script type="text/javascript"> function moreInfo(){ var para= document.createElement("p") var divObj = document.getElementById("p1"); divObj.appendChild(para); var divObj

我想列一个清单。单击列表中的每个项目时,将显示说明。现在我的代码只显示项目,当我单击一个项目时,会显示所有项目的描述。有人能帮我解决这个问题吗

<script type="text/javascript">
function moreInfo(){
var para= document.createElement("p")
var divObj = document.getElementById("p1");
divObj.appendChild(para);
var divObj = document.getElementById("p2");
divObj.appendChild(para);
var divObj = document.getElementById("p3");
divObj.appendChild(para);
var divObj = document.getElementById("p4");
divObj.appendChild(para);
var txt = document.createTextNode("This product is good");
para.appendChild(txt);
var txt = document.createTextNode("This product is bad");
para.appendChild(txt);
var txt = document.createTextNode("This product is pretty");
para.appendChild(txt);
var txt = document.createTextNode("This product is ugly");
para.appendChild(txt);
}
</script>
</head>
<body>
<div id="p1" class="divStyle">
    <p onclick="moreInfo()"> 
    Good
   </p>
<div id="p2" class="divStyle">
    <p onclick="moreInfo()"> 
    Bad
   </p>
<div id="p3" class="divStyle">
    <p onclick="moreInfo()"> 
    Pretty
   </p>
<div id="p4" class="divStyle">
    <p onclick="moreInfo()"> 
    Ugly
   </p>
</div>

函数moreInfo(){
var para=document.createElement(“p”)
var divObj=document.getElementById(“p1”);
divObj.儿童(第2段);
var divObj=document.getElementById(“p2”);
divObj.儿童(第2段);
var divObj=document.getElementById(“p3”);
divObj.儿童(第2段);
var divObj=document.getElementById(“p4”);
divObj.儿童(第2段);
var txt=document.createTextNode(“此产品很好”);
第3段(txt);
var txt=document.createTextNode(“此产品不好”);
第3段(txt);
var txt=document.createTextNode(“这个产品很漂亮”);
第3段(txt);
var txt=document.createTextNode(“这个产品很难看”);
第3段(txt);
}

坏的

漂亮的

丑陋的


调用javascript函数时,可以传递要显示的值。正如您所说,您是Javascript的初学者,我将其重新排列如下。希望这有帮助

<head>
  <script type="text/javascript">
    function moreInfo(p){
    var para= document.createElement("p")
    var divObj = document.getElementById("results");
    divObj.innerHTML = ""; // remove the previous clicks results
    divObj.appendChild(para);
    var txt = document.createTextNode("This product is " + p);
    para.appendChild(txt);
    }
  </script>
</head>
<body>
<div id="p1" class="divStyle">
    <p onclick="moreInfo('good')"> Good </p>
</div>
<div id="p2" class="divStyle">
  <p onclick="moreInfo('bad')"> Bad</p>
</div>
<div id="p3" class="divStyle">
  <p onclick="moreInfo('pretty')"> Pretty</p>
</div>
<div id="p4" class="divStyle">
  <p onclick="moreInfo('ugly')"> Ugly</p>
</div>
<div id='results'></div>

函数moreInfo(p){
var para=document.createElement(“p”)
var divObj=document.getElementById(“结果”);
divObj.innerHTML=“;//删除以前的单击结果
divObj.儿童(第2段);
var txt=document.createTextNode(“此产品为”+p);
第3段(txt);
}
好的

坏的

漂亮的

丑陋的


调用javascript函数时,可以传递要显示的值。正如您所说,您是Javascript的初学者,我将其重新排列如下。希望这有帮助

<head>
  <script type="text/javascript">
    function moreInfo(p){
    var para= document.createElement("p")
    var divObj = document.getElementById("results");
    divObj.innerHTML = ""; // remove the previous clicks results
    divObj.appendChild(para);
    var txt = document.createTextNode("This product is " + p);
    para.appendChild(txt);
    }
  </script>
</head>
<body>
<div id="p1" class="divStyle">
    <p onclick="moreInfo('good')"> Good </p>
</div>
<div id="p2" class="divStyle">
  <p onclick="moreInfo('bad')"> Bad</p>
</div>
<div id="p3" class="divStyle">
  <p onclick="moreInfo('pretty')"> Pretty</p>
</div>
<div id="p4" class="divStyle">
  <p onclick="moreInfo('ugly')"> Ugly</p>
</div>
<div id='results'></div>

函数moreInfo(p){
var para=document.createElement(“p”)
var divObj=document.getElementById(“结果”);
divObj.innerHTML=“;//删除以前的单击结果
divObj.儿童(第2段);
var txt=document.createTextNode(“此产品为”+p);
第3段(txt);
}
好的

坏的

漂亮的

丑陋的


我刚刚尝试了您的代码,并尝试了您的要求。剩下的部分是删除在显示新元素之前创建的元素

下面是代码片段

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script type="text/javascript">
function moreInfo(ClickedId){
    var myElem = document.getElementById('extraP');
    if (myElem !== null) {
        myElem.remove();
        }
    var para= document.createElement("p")
    para.setAttribute("id", "extraP");
    if(ClickedId == "p1"){
        var divObj = document.getElementById("p1");
        var txt = document.createTextNode("This product is good");
        divObj.appendChild(para);
    }
    if(ClickedId == "p2"){
        var divObj = document.getElementById("p2");
        var txt = document.createTextNode("This product is bad");
        divObj.appendChild(para);
    }
    if(ClickedId == "p3"){
        var divObj = document.getElementById("p3");
        var txt = document.createTextNode("This product is pretty");
        divObj.appendChild(para);
    }
    if(ClickedId == "p4"){
        var divObj = document.getElementById("p4");
        var txt = document.createTextNode("This product is ugly");
        divObj.appendChild(para);
    }
    para.appendChild(txt);

}
</script>
</head>
<body>
<div id="p1" class="divStyle">
    <p onclick="moreInfo(this.parentNode.id)"> 
    Good
   </p>
<div id="p2" class="divStyle">
    <p onclick="moreInfo(this.parentNode.id)"> 
    Bad
   </p>
<div id="p3" class="divStyle">
    <p onclick="moreInfo(this.parentNode.id)"> 
    Pretty
   </p>
<div id="p4" class="divStyle">
    <p onclick="moreInfo(this.parentNode.id)"> 
    Ugly
   </p>
</div>
</html>

功能更多信息(单击EDID){
var myElem=document.getElementById('extraP');
if(myElem!==null){
myElem.remove();
}
var para=document.createElement(“p”)
第setAttribute段(“id”、“extraP”);
如果(单击EDID==“p1”){
var divObj=document.getElementById(“p1”);
var txt=document.createTextNode(“此产品很好”);
divObj.儿童(第2段);
}
如果(单击EDID==“p2”){
var divObj=document.getElementById(“p2”);
var txt=document.createTextNode(“此产品不好”);
divObj.儿童(第2段);
}
如果(单击EDID==“p3”){
var divObj=document.getElementById(“p3”);
var txt=document.createTextNode(“这个产品很漂亮”);
divObj.儿童(第2段);
}
如果(单击EDID==“p4”){
var divObj=document.getElementById(“p4”);
var txt=document.createTextNode(“这个产品很难看”);
divObj.儿童(第2段);
}
第3段(txt);
}

坏的

漂亮的

丑陋的

请让我知道它是否对你有帮助


谢谢

我刚刚尝试了您的代码,并尝试了您的要求。剩下的部分是删除在显示新元素之前创建的元素

下面是代码片段

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script type="text/javascript">
function moreInfo(ClickedId){
    var myElem = document.getElementById('extraP');
    if (myElem !== null) {
        myElem.remove();
        }
    var para= document.createElement("p")
    para.setAttribute("id", "extraP");
    if(ClickedId == "p1"){
        var divObj = document.getElementById("p1");
        var txt = document.createTextNode("This product is good");
        divObj.appendChild(para);
    }
    if(ClickedId == "p2"){
        var divObj = document.getElementById("p2");
        var txt = document.createTextNode("This product is bad");
        divObj.appendChild(para);
    }
    if(ClickedId == "p3"){
        var divObj = document.getElementById("p3");
        var txt = document.createTextNode("This product is pretty");
        divObj.appendChild(para);
    }
    if(ClickedId == "p4"){
        var divObj = document.getElementById("p4");
        var txt = document.createTextNode("This product is ugly");
        divObj.appendChild(para);
    }
    para.appendChild(txt);

}
</script>
</head>
<body>
<div id="p1" class="divStyle">
    <p onclick="moreInfo(this.parentNode.id)"> 
    Good
   </p>
<div id="p2" class="divStyle">
    <p onclick="moreInfo(this.parentNode.id)"> 
    Bad
   </p>
<div id="p3" class="divStyle">
    <p onclick="moreInfo(this.parentNode.id)"> 
    Pretty
   </p>
<div id="p4" class="divStyle">
    <p onclick="moreInfo(this.parentNode.id)"> 
    Ugly
   </p>
</div>
</html>

功能更多信息(单击EDID){
var myElem=document.getElementById('extraP');
if(myElem!==null){
myElem.remove();
}
var para=document.createElement(“p”)
第setAttribute段(“id”、“extraP”);
如果(单击EDID==“p1”){
var divObj=document.getElementById(“p1”);
var txt=document.createTextNode(“此产品很好”);
divObj.儿童(第2段);
}
如果(单击EDID==“p2”){
var divObj=document.getElementById(“p2”);
var txt=document.createTextNode(“此产品不好”);
divObj.儿童(第2段);
}
如果(单击EDID==“p3”){
var divObj=document.getElementById(“p3”);
var txt=document.createTextNode(“这个产品很漂亮”);
divObj.儿童(第2段);
}
如果(单击EDID==“p4”){
var divObj=document.getElementById(“p4”);
var txt=document.createTextNode(“这个产品很难看”);
divObj.儿童(第2段);
}
第3段(txt);
}

坏的

漂亮的

丑陋的

请让我知道它是否对你有帮助


谢谢

您可以通过稍加更改来总结代码。为“显示当前单击说明”创建一个结果
p
。使用
作为获取当前元素的参数,使用
innerHTML
作为获取内部字符串的参数

<script type="text/javascript">
function moreInfo(t){
var para= document.getElementById("result");
para.innerHTML = "";//to set empty for new click
var txt = document.createTextNode("This product is "+t.innerHTML);
para.appendChild(txt);
}
</script>
</head>
<body>
<div id="p1" class="divStyle">
    <p onclick="moreInfo(this)"> 
    Good
   </p>
<div id="p2" class="divStyle">
    <p onclick="moreInfo(this)"> 
    Bad
   </p>
<div id="p3" class="divStyle">
    <p onclick="moreInfo(this)"> 
    Pretty
   </p>
<div id="p4" class="divStyle">
    <p onclick="moreInfo(this)"> 
    Ugly
   </p>
</div>
<p id="result"></p>

函数moreInfo(t){
var para=document.getElementById(“结果”);
para.innerHTML=“;//若要为新单击设置为空,请单击
var txt=document.createTextNode(“此产品为”+t.innerHTML);
a段
<div id="p1" class="divStyle">
    <p onclick="moreInfo(event)"> Good </p>
</div>
<div id="p2" class="divStyle">
    <p onclick="moreInfo(event)"> Bad </p>
</div>
<div id="p3" class="divStyle">
    <p onclick="moreInfo(event)"> Pretty </p>
</div>
<div id="p4" class="divStyle">
    <p onclick="moreInfo(event)"> Ugly </p>
</div>
var _getClickedElement =document.getElementsByTagName('p');

// Attaching eventlistener to each p tag
for(var i =0; i<_getClickedElement.length;i++){
  var _m = i;  //because of event delegation binding i with the element
  _getClickedElement[_m].addEventListener('click',function(event){
    var _getParentId = this.parentNode.id; // get parent Id of click element
    _showDesc(_getParentId);
})
}


// This function will create p to show the description
function _showDesc(parentId){
var text = "";
switch(parentId) {
    case "p1":
        text ="This product is good";
      break;
     case "p2":
        text ="This product is bad"
        break;
    case "p3":
        text ="This product is pretty"
        break;
    case "p4":
        text ="This product is ugly"
        break;
}

//Remove any previous description tag.

var _getPrevElement =document.getElementById('desc');
if(_getPrevElement !== null){
_getPrevElement.parentNode.removeChild(_getPrevElement);
}


var para= document.createElement("p");
para.id = "desc"
para.innerHTML =text;
document.getElementById(parentId).appendChild(para);
}