replace id´s

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • replace id´s

    Hi, ich bekomme es einfach nicht gebacken die attributen mehrerer id´s
    zu ändern. Weder mit JQuery noch mit einfachstem replace.
    Nur die ID´s wäre ja nicht das Problem. Aber es geht auch in dem Teil im Funktionsaufruf.

    Ich habe z.B folgendes Div.

    <div id="paula_12">

    <div id="cesar_12"> <span id="richard_12"></span>
    onclick="sendPMessage('Marcus','christoph_12','banane_12')"
    </div>

    </div>

    Mein letzter Versuch als Beispiel:
    Code:
    var inhalt = document.getElementById(newdivContPriv);
    console.log(inhalt);
    var temp = inhalt;
    
    
    temp.replace("12","21");
    inhalt = temp;
    console.log("##########################");
    console.log(inhalt);
    Ich war der Überzeugung das ich in diesem Fall das ganze als Text
    behandeln kann und so einfach die id´s austauschen könnte.
    Dem ist anscheinend nicht so.
    Aber auch mein bestes googeln kommt zu keinem brauchbaren Ergebnis.
    Zuletzt geändert von Marcus-24-D; 20.03.2014, 23:12.

  • #2
    Ich hab kein Wort verstanden. Was soll das werden, wenns fertig ist?

    Kommentar


    • #3
      ok sry. war ich wohl zu doof um mich richtig auszudrücken.

      ich will diesen teil: _12

      mit diesem austauschen: _21

      Kommentar


      • #4
        Warum? IDs sind dazu da einen Eintrag eindeutig zu identifizieren. IDs sind allein vom logischen Verständnis her unveränderbar. Es ist sehr, sehr ungewöhnlich, wenn jemand auf die Idee kommt IDs zu ersetzen. Meistens steckt ein fehlerhaftes Konzept dahinter.

        Von daher: Warum willst du das machen? Was willst du damit erreichen?

        Kommentar


        • #5
          Nun ja das stimmt und geb dir da vollkommen recht.
          Ich habe vor einiger Zeit mal nen Chatscript gekauft bei welchem das Konzept für den Privatchat leider nicht so schön aufgebaut wurde.
          Hier wurde dann etwas gefuscht.
          Da ich mir eigentlich nicht den riesen aufwand machen wollte und
          den ganzen Privatchatteil neu zu schreiben wollte ich die ID´s tauschen.
          Das Problem welches sich ergibt ist folgendes:

          Sender / Empfänger.
          Je nachdem welcher zuerst das Privatchat-Fenster öffnet erhält folgende id.
          User 1 öffnet das Fenster und die divs tragen die id 1_2.
          Beim Empfänger geht es auch als 1_2 ein.
          Für denn Fall aber das beide einen Privatchat starten bekommt jeder 2 Privatfenster. Jedes mit den ID´s 1_2 und 2_1.

          Jetzt haben die es sich einfach gemacht und prüfen ob das senderDiv
          vorhanden ist. Wenn ja, wird es unterdrückt, welches zur folge hat,
          das wenn beide ein Fenster offen haben kein Privatchat stattfinden kann
          weil sie sich gegenseitig ausblocken.

          Und das hier ist das super Script indem das ganze stattfindet. (Originalversion)

          Code:
          /*
          * create private chat div
          *
          */
          
          var privateChat = 0;
          
          
          
          
          function createPChatDiv(divPName,divToName,dPID,duID)
          {
          	if(privateChat == 1)
          	{
          		showInfoBox("system","200","300","200","",lang30);
          		return false;
          	}
          
          	// to user
          	if(divToName!=userName)
          	{
          		var uUser = divToName;
          	}
          	else
          	{
          		var uUser = divPName;
          	}
          
          	// window title
          	var pTitle = uUser;
          
          	// div name
          	divPName = duID+"_"+dPID;
          	
          	// prevent duplicate private chat windows 
          	
          	if(document.getElementById(dPID+"_"+duID)	)
          	{
          		document.getElementById(dPID+"_"+duID).style.visibility = 'none';
          		document.getElementById("pcontent_"+dPID+"_"+duID).style.visibility = 'none';
          		document.getElementById("pmenuBar_"+dPID+"_"+duID).style.visibility = 'none';
          		document.getElementById("psendbox_"+dPID+"_"+duID).style.visibility = 'none';
          		document.getElementById("pmenuWin_"+dPID+"_"+duID).style.visibility = 'none';	
          		
          		return false;
          	}
          	
          
          
          	// if div exists
          	if(!document.getElementById(divPName))
          	{
          		// create div
          		var ni = document.getElementById("pWin");
          
          		var newdiv = document.createElement('div');
          		newdiv.setAttribute("id",divPName);
          
          		newdiv.className = "pChatWin";
          
          		// title
          		newdiv.innerHTML = "<div doFocus(\""+divPName+"\")' id='ptitle_"+divPName+"' class='ptitle' style='cursor:move;' onclick=doFocus(\""+divPName+"\")> <span style='float:left;'>&nbsp;<img style='vertical-align:middle;' src='avatars/online.gif'>&nbsp;"+decodeURI(pTitle)+"</span> <span style='float:right;'><span style='cursor:pointer;' onclick='minPwin(\""+divPName+"\",\""+divPName+"\")'><img src='images/min.gif'></span>&nbsp;<span style='cursor:pointer;' onclick='closePWin(\""+divPName+"\");privateChatCount();'><img src='images/close.gif'></span>&nbsp;</div>";
          
          		// content
          		newdiv.innerHTML += "<div id='pcontent_"+divPName+"' class='pcontent'></div>";
          
          		// menu
          		newdiv.innerHTML += "<div id='pmenuBar_"+divPName+"' class='pmenuBar'></div>";
          
          		// sendbox
          		newdiv.innerHTML += '<div id=\'psendbox_'+divPName+'\' class=\'psendbox\'><input type=\'text\' id=\'poptionsBar_'+divPName+'\' class="poptionsBar" onKeyPress="return submitenter(this,event,\'poptionsBar_'+divPName+'\',\'pcontent_'+divPName+'\',\''+uUser+'\');" onfocus="changeMessBoxStyle(\'poptionsBar_'+divPName+'\');"></textarea><input id="poptionsSend" class="poptionsSend" type="button" value="'+lang31+'" onclick="sendPMessage(\''+uUser+'\',\'poptionsBar_'+divPName+'\',\'pcontent_'+divPName+'\')"></div>';
          
          		// menu win
          		newdiv.innerHTML += "<div id='pmenuWin_"+divPName+"'></div>";
          
          		ni.appendChild(newdiv);
          
          		// add menu
          		optionsMenu('pmenuBar_'+divPName, 'poptionsBar_'+divPName, 'pcontent_'+divPName, 'pmenuWin_'+divPName);
          
          		// focus window
          		doFocus(divPName);
          		
          		// drag window
          		$( "#"+divPName ).draggable({
          			
          			handle:"#ptitle_"+divPName,
          			containment: "#mainContainer", scroll: false
          			
          			
          			});
          			
          		//start effect
          		$("#"+divPName).effect( "bounce", 
                    {times:3}, 300 );	
          
          
          		
          
          
          		// resize window
          		$( "#"+divPName ).resizable({
          			minHeight: 300,
          			minWidth: 444,
          			//helper: "ui-resizable-helper",
          			//animate: true,
          			containment: "#mainContainer"
          		});			
          		
          		//autoadd for resize
          		$( "#"+divPName ).mouseover(function( event ) {
          		var currentId = $(this).attr('id');
          		resPriFun(currentId);});
          	
          
          	}
          
          
          }
          Meine Variante würde so funktionieren wenn ich die id´s getauscht bekäme.
          Weil mit absenden des textes wird diese id verwendet die auch so
          in die DB eingetragen wird:

          poptionsBar_'+divPName+ // poptionsBar_1_2


          Mein Teil. etwas verwüstet durch das ganze hin und her geteste:

          Code:
          /*
          * create private chat div
          *
          */
          
          var privateChat = 0;
          
          function createPChatDiv(divPName,divToName,dPID,duID)
          {
          	if(privateChat == 1)
          	{
          		showInfoBox("system","220","300","200","",lang30);
          		return false;
          	}
          
          	// to user
          	if(divToName!=userName)
          	{
          		var uUser = divToName;
          	}
          	else
          	{
          		var uUser = divPName;
          	}
          
          	// window title
          	var pTitle = uUser;
          
          	// div name
          	divPName = duID+"_"+dPID;
          	
          	// prevent duplicate private chat windows 
              
          	var rdivPName = dPID+"_"+duID;
              	
                 //prevent duplicate private window
                  
          
              
          
          
          	// if div exists
          	        if(document.getElementById(rdivPName))
                  {
                      document.getElementById(rdivPName).style.visibility = 'visible';
                      document.getElementById("pcontent_"+rdivPName).style.visibility = 'visible';
                      document.getElementById("pmenuBar_"+rdivPName).style.visibility = 'visible';
                      document.getElementById("psendbox_"+rdivPName).style.visibility = 'visible';
                      document.getElementById("pmenuWin_"+rdivPName).style.visibility = 'visible';	
           
          // $("#"+rdivPName + " > id").html("Question"+(numberOfQuestions));
          
          //$(".selector").attr("name",$(".selector").attr("title"));         // transfering all values of title to name
          //$(".selector").removeAttr("title"); 
          
          jQuery(rdivPName).each(function(n) {
                  this.innerHTML = this.innerHTML.replace(new RegExp("/"+rdivPName+"/g"), divPName);
              });
              
              
           /*
                  //rename
                  var div_node = document.getElementById(rdivPName).id = divPName;
                  var div_node = document.getElementById("pcontent_"+rdivPName).id = "pcontent_"+divPName;
                  var div_node = document.getElementById("pmenuBar_"+rdivPName).id = "pmenuBar_"+divPName;
                  var div_node = document.getElementById("psendbox_"+rdivPName).id = "psendbox_"+divPName;
                  var div_node = document.getElementById("pmenuWin_"+rdivPName).id = "pmenuWin_"+divPName;
          
                  
                     // $(rdivPName).attr("id", divPName);
                      $("pcontent_"+rdivPName).attr("id", "pcontent_"+divPName);
                      $("pmenuBar_"+rdivPName).attr("id", "pmenuBar_"+divPName);
                      $("psendbox_"+rdivPName).attr("id", "psendbox_"+divPName);
                      $("pmenuWin_"+rdivPName).attr("id", "pmenuWin_"+divPName);
          */            
                      console.log("if");
                      return false;
                      
                      
                  }    
              else if(!document.getElementById(divPName))
          	{
          		// create div
          		var ni = document.getElementById("pWin");
          
          		var newdiv = document.createElement('div');
          		newdiv.setAttribute("id",divPName);
                  
          		newdiv.className = "pChatWin";
          
          		// title
          		newdiv.innerHTML = "<div doFocus(\""+divPName+"\")' id='ptitle_"+divPName+"' class='ptitle' style='cursor:move;' onclick=doFocus(\""+divPName+"\")> <span style='float:left;'>&nbsp;<img style='vertical-align:middle;' src='avatars/online.gif'>&nbsp;"+decodeURI(pTitle)+"</span> <span style='float:right;'><span style='cursor:pointer;' onclick='minPwin(\""+divPName+"\",\""+divPName+"\")'><img src='images/min.gif'></span>&nbsp;<span style='cursor:pointer;' onclick='closePWin(\""+uUser+"\",\""+divPName+"\");privateChatCount();'><img src='images/close.png'></span>&nbsp;</div>";
          
          		// content
          		newdiv.innerHTML += "<div id='pcontent_"+divPName+"' class='pcontent'></div>";
          
          		// menu
          		newdiv.innerHTML += "<div id='pmenuBar_"+divPName+"' class='pmenuBar'></div>";
          
          		// sendbox
          		newdiv.innerHTML += '<div id=\'psendbox_'+divPName+'\' class=\'psendbox\'><input type=\'text\' id=\'poptionsBar_'+divPName+'\' class="poptionsBar" onKeyPress="return submitenter(this,event,\'poptionsBar_'+divPName+'\',\'pcontent_'+divPName+'\',\''+uUser+'\');" onfocus="changeMessBoxStyle(\'poptionsBar_'+divPName+'\');"></textarea><input id="poptionsSend" class="poptionsSend" type="button" value="'+lang31+'" onclick="sendPMessage(\''+uUser+'\',\'poptionsBar_'+divPName+'\',\'pcontent_'+divPName+'\')"></div>';
          
          		// menu win
          		newdiv.innerHTML += "<div id='pmenuWin_"+divPName+"'></div>";
          
          		ni.appendChild(newdiv);
          
          		// add menu
          		optionsMenu('pmenuBar_'+divPName, 'poptionsBar_'+divPName, 'pcontent_'+divPName, 'pmenuWin_'+divPName);
          
          		// focus window
          		doFocus(divPName);
          		
          		// drag window
          		$( "#"+divPName ).draggable({
          			
          			handle:"#ptitle_"+divPName,
          			containment: "#mainContainer", scroll: false
          			
          			
          			});
                      
          		//start effect
          		$("#"+divPName).effect( "bounce", 
                    {times:3}, 300 );	
          
          
          		
          
          
          		// resize window
          		$( "#"+divPName ).resizable({
          			minHeight: 300,
          			minWidth: 444,
          			//helper: "ui-resizable-helper",
          			//animate: true,
          			containment: "#mainContainer"
          		});			
          		
          		//autoadd for resize
          		$( "#"+divPName ).mouseover(function( event ) {
          		var currentId = $(this).attr('id');
          		resPriFun(currentId);});     
                  console.log("elseif");       
                      
          	}
          
                  else{
                  console.log("else");
                  }
          
          
          }
          Zuletzt geändert von Marcus-24-D; 21.03.2014, 00:04.

          Kommentar

          Lädt...
          X