Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Funzione che non gira su ie e safari (solo firefox)

    Salve,
    ho una funzione che gira solo su firefox (provato su firefox, ie e safari).
    Il richiamo d HTML (che è quello che da errore su internet explorer) é:
    codice:
    <span class="event" id="domain" onclick="morphElement('domain', 'morph=select;autosubmit=domainform;name=domain;options=myaudiens.com|cristianoinsola.it');">myaudiens.com</span>
    E la funzione recita:
    codice:
    function morphElement(id, actions) {
    	//Carico tutte le opzioni
    	var explode = actions.split(';');
    	var option = new Array;
    	for(var n = 0; n < explode.length; n++) {
    		var query = explode[n].split('=');
    		option[query[0]] = query[1];
    	}
    	
    	//Azioni varie
    	var element = document.getElementById(id);
    	var parent = element.parentNode;
    	var node = new Object;
    	if(defaultNode == null) var defaultNode = element.innerHTML; // Valore originale
    	// CASELLA DI TESTO
    	if(option['morph'] == 'text') {
    		node = document.createElement('input');
    		node.value = element.innerHTML;	
    		node.name = option['name'];
    		node.type = 'text';
    	}
    	
    	// TEXTAREA
    	if(option['morph'] == 'textarea') {
    		node = document.createElement('textarea');
    		node.innerHTML = element.innerHTML;
    	}
    	
    	// SELECT
    	if(option['morph'] == 'select') {
    		node = document.createElement('select');
    		node.name = option['name'];
    		var loadOpts = option['options'].split('|');
    		for(var i = 0; i < loadOpts.length; i++) {
    			var newOption = document.createElement('option');
    			newOption.name = loadOpts[i];
    			newOption.value = loadOpts[i];
    			newOption.innerHTML = loadOpts[i];
    			if(element.innerHTML == loadOpts[i]) { newOption.selected = 'selected'; var release = loadOpts[i]; }
    			node.appendChild(newOption);
    		}
    	}
    	node.name = option['name'];
    	node.id = id;
    
    //Verifico se devo aggiungere tasto submit
    if(option['submit'] != null) {
    if(option['submit'] != 'none') {
    	var submitOriginal = document.getElementById(option['submit']);
    	var submitButton = document.createElement('input');
    	submitButton.id = 'submit_' + option['submit'];
    	submitButton.type = 'submit';
    	submitButton.value = submitOriginal.title;
    	submitOriginal.appendChild(submitButton);
    } }
    //Verifico invio automatico
    if(option['autosubmit'] != null) {
    if(option['autosubmit'] != 'none') {
    	node.onchange = function() { document.getElementById(option['autosubmit']).submit(); }	
    } }
    //Verifico completamento automatico
    if(option['autofill'] != null) {
    if(option['autofill'] != 'none') {
    	if(option['morph'] == 'text')
    	node.onkeyup = function() { document.getElementById(option['autofill']).value = node.value; }
    	else if(option['morph'] == 'textarea')
    	node.onkeyup = function() { document.getElementById(option['autofill']).value = node.value; }
    	else if(option['morph'] == 'select')
    	node.onchange = function() { document.getElementById(option['autofill']).value = loadOpts[node.selectedIndex]; }
    } }
    //Reimposto valori di base
    node.onblur = function() {
    	reverseElement(id, actions, element.tagName, element.getAttribute('class'));
    	if(submitOriginal != null) submitOriginal.removeChild(submitOriginal.firstChild);
    }	
    
    parent.replaceChild(node, element);	
    }
    //Funzione di reintegrazione
    function reverseElement(id, actions, tag, class) {
    	var element = document.getElementById(id);
    	var parent = element.parentNode;
    	var node = document.createElement(tag);
    	node.id = id;
    	node.setAttribute('class', class);
    	node.onclick = function() { morphElement(id, actions) }
    	if(element.tag == 'textarea') node.innerHTML = element.innerHTML; else node.innerHTML = element.value;
    parent.replaceChild(node, element);
    }
    Qualcuno che mi aiuti?
    Cristiano
    ---
    Originariamente inviato da rebelia : solo un nerd puo' pensare di tacchinare in un forum di informatica

  2. #2
    Cosa dice esattamente internet explorer?

  3. #3
    Trovato l'errore, era qui:
    codice:
    //Funzione di reintegrazione
    function reverseElement(id, actions, tag, class) {
    	var element = document.getElementById(id);
    	var parent = element.parentNode;
    	var node = document.createElement(tag);
    	node.id = id;
    	node.setAttribute('class', class);
    	node.onclick = function() { morphElement(id, actions) }
    	if(element.tag == 'textarea') node.innerHTML = element.innerHTML; else node.innerHTML = element.value;
    parent.replaceChild(node, element);
    }
    class è una parola riservata: l'ho sostituito con classNamed e tutto apposto
    Cristiano
    ---
    Originariamente inviato da rebelia : solo un nerd puo' pensare di tacchinare in un forum di informatica

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.