Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.11.2010, 01:53
Новичок на форуме
Отправить личное сообщение для Dissonance Посмотреть профиль Найти все сообщения от Dissonance
 
Регистрация: 28.11.2010
Сообщений: 5

cloneNode не работает?
Доброй ночи.

У меня есть функция, которая клонирует участок формы, добавляя поля. В этом участке формы есть две картинки (<img>). По кликанию на них должны меняться значения hidden полей. Собственно в эксплорере все работает замечательно. Но вот фаерфокс последний, не выдавая ошибку, игнорирует часть кода.

Итак, функция:

function moreFields() {
	counter++;
	var newFields = document.getElementById('readroot').cloneNode(true);
	newFields.id = '';
	newFields.style.display = 'block';



	var newField = newFields.childNodes;
	for (var i=0;i<newField.length;i++) {
		
		var theName = newField[i].name
		if (theName)
			newField[i].name = theName + counter;
		
		if (theName == "sexImage") {
//			alert(document.getElementById(theName).innerHTML);

			newField[i].innerHTML = "<img name='childSexMama"+counter+"' src='../_img/regform50.gif' width='50px' height='50px' onClick=\"document.forms['form1'].elements['iChildSex" + counter + "'].value='Девочка';changeChildSex(this,"+counter+")\"><img name='childSexPapa"+counter+"'  src='../_img/regform50.gif' width='50px' height='50px' onClick=\"document.forms['form1'].elements['iChildSex" + counter + "'].value='Мальчик';changeChildSex(this,"+counter+")\">";
			
//			alert(newField[i].innerHTML);

			
		}
	}
	var insertHere = document.getElementById('writeroot');
	insertHere.parentNode.insertBefore(newFields,insertHere);
}



innerHTML не отрабатывает. Я пытался использовать DOM, делаяя appendChild, - все равно не работает. Плиз хелп.
Ответить с цитированием
  #2 (permalink)  
Старый 28.11.2010, 12:30
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от Dissonance
cloneNode не работает?
Этот пример работает в ИЕ7 и ФФ...

<html>
<head>
<style>
</style>
<script>
function Clone() {
	var o=document.getElementById('test')
	var op=o.getElementsByTagName('p')
	var on=op[0].cloneNode(true)
	on.innerHTML=on.innerHTML+' '+op.length
	o.appendChild(on)
}
</script>
</head>
<body>
<div id='test'>
	<p>test</p>
</div>
<input type='button' value='Clone' onclick='Clone()' />
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 28.11.2010, 16:21
Новичок на форуме
Отправить личное сообщение для Dissonance Посмотреть профиль Найти все сообщения от Dissonance
 
Регистрация: 28.11.2010
Сообщений: 5

Да, но у меня, как вы видите, клонируются поля, поэтому оно в ФФ не работает. А как сделать так, чтоб заработало.

Код обновил, выкладываю скрипт и хтмл:

// JavaScript Document
var counter = 0;

function moreFields() {
	counter++;
	var newFields = document.getElementById('readroot').cloneNode(true);
	newFields.id = '';
	newFields.style.display = 'block';



	var newField = newFields.childNodes;
	for (var i=0;i<newField.length;i++) {
		
		var theName = newField[i].name
		var theId = newField[i].id
		
	
		if (theName)
			newField[i].name = theName + counter;
		
		if (theName == "sexImage") {
			
			
			
			stringToadd = "<img name='childSexMama"+counter+"' src='../_img/regform50.gif' width='50px' height='50px' onClick=\"document.forms['form1'].elements['iChildSex" + counter + "'].value='Девочка';changeChildSex(this,"+counter+")\"><img name='childSexPapa"+counter+"'  src='../_img/regform50.gif' width='50px' height='50px' onClick=\"document.forms['form1'].elements['iChildSex" + counter + "'].value='Мальчик';changeChildSex(this,"+counter+")\">";
			
		
		   stringToadd += "<a href='#' onclick='moreFields();' >a</a>";
		   if (counter != 1) {
	
		   stringToadd += "<a href='#' onclick='deleteChild(this);' >x</a>";
		   
		   }
		
			stringToadd += "<input name='iDay' type='text' class='input2symb' id='iDay' size='5' maxlength='2' />.<input name='iMonth' type='text' class='input2symb' id='iMonth' size='5' maxlength='2' />.<input name='iYear' type='text' class='input15symb' id='iYear' size='9' maxlength='4' /><input type='hidden' name='iChildSex' value='Мальчик' id='childSex' />";

			
			
			
				newField[i].innerHTML = stringToadd;
		}
	}
	var insertHere = document.getElementById('writeroot');
	insertHere.parentNode.insertBefore(newFields,insertHere);
}

window.onload = moreFields;

function changeSex(obj) {
	
	obj.className = "imgBorder";
	
	if (obj.name == "mama") {
	
		document.images['papa'].className = "imgNoBorder";
		document.forms['form1'].elements['iSex'].value = "Мама";
		
	}
	
	if (obj.name == "papa") {
	
		document.images['mama'].className = "imgNoBorder";
		document.forms['form1'].elements['iSex'].value = "Папа";
		
	}
	
}
function changeChildSex(obj, number) {
	
//	alert("childSexMama"+number);
	
	obj.className = "imgBorder";
//	alert(obj.name);
	
//	if (myString.match(/regex/)) { /*Success!*/ }
	
	if (obj.name == "childSexMama"+number) {
		
//		alert('childSexPapa'+number);
	
		document.images['childSexPapa'+number].className = "imgNoBorder";

		
	}
	
	if (obj.name == "childSexPapa"+number) {
	
		document.images['childSexMama'+number].className = "imgNoBorder";

		
	}
	
}

function deleteChild (obj) {

	obj.parentNode.parentNode.removeChild(obj.parentNode);
	
}



<div style="position: absolute; top: 45px; left: 311px; z-index: 5;">
  <form id="form1" name="form1" method="post" action="index.php">
    <table width="663" align="center">
      <tr>
        <td align="left">&nbsp;</td>
        <td align="left">&nbsp;</td>
        <td align="center"><input name="childs" type="hidden" id="childs" value="<?php echo $childs; ?>" /></td>
      </tr>
      <tr>
        <td align="left">&nbsp;</td>
        <td align="left">&nbsp;</td>
        <td align="center">&nbsp;</td>
      </tr>
      <tr>
        <td width="101" align="left">Имя *</td>
        <td width="270" align="left"><input name="iLogin" type="text" class="input15symb" id="iLogin" value="<?php echo $iLogin; ?>" maxlength="15" /></td>
        <td width="270" align="center">
          <img name="mama" src="../_img/regform50.gif" width="50" height="30" onclick="changeSex(this)"/>Я мама
          
          <img name="papa" src="../_img/regform50.gif" alt="" width="50" height="30" onclick="changeSex(this)"/>Я папа
<input name="iSex" type="hidden" id="iSex" /></td>
      </tr>
      <tr>
        <td align="left">email *</td>
        <td align="left"><input name="iEmail" type="text" class="input30symb" id="iEmail" value="<?php echo $iEmail; ?>" maxlength="30" /></td>
        <td align="left"><p>Подтверждение пароля </p></td>
      </tr>
      <tr>
        <td align="left">Пароль *</td>
        <td align="left"><input name="iPassword" type="password" class="input30symb" id="iPassword" size="10" maxlength="30" /></td>
        <td align="left"><input name="iPassword2" type="password" class="input30symb" id="iPassword4" maxlength="30" /></td>
      </tr>
      <tr>
        <td align="left">Город *</td>
        <td align="left"><select name="iCity" class="input30symb" id="iCity">
          <?php include("cities.php");?>
        </select></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td align="left">&nbsp;</td>
        <td align="left">&nbsp;</td>
        <td align="center">&nbsp;</td>
      </tr>
      <tr>
        <td align="left">Дети</td>
        <td align="center">День рождения</td>
        <td align="center">&nbsp;</td>
      </tr>
       <tr>
        <td align='center'></td>
        <td colspan='2' align='left'>
		
		<div id="readroot" style="display: none">
        <div name="sexImage" id="sexImage"></div>

        

        </div>
		<span id="writeroot"></span>

	     </td>

      </tr>
      <tr>
        <td align="left">&nbsp;</td>
        <td align="center">Проверочный код</td>
        <td align="center">&nbsp;</td>
      </tr>
      <tr>
        <td align="left">&nbsp;</td>
        <td colspan="2" align="center"><input name="iSpamCode" type="text" class="input15symb" id="iSpamCode" />
          <input name="fff" type="text" disabled="disabled" class="input15symb" id="iSpamCode4" value="<?php echo $spamcode; ?>" />
          <input name="iCorrectSpamCode" type="hidden" id="iCorrectSpamCode" value="<?php echo $spamcode; ?>" /></td>
      </tr>
      <tr>
        <td align="left">&nbsp;</td>
        <td colspan="2" align="left"><input name="iAgreeWithOferta" type="checkbox" id="iAgreeWithOferta" value="true" />
          -
          Я соглашаюсь с условиями публичной оферты</td>
      </tr>
      <tr>
        <td align="left">&nbsp;</td>
        <td colspan="2" align="center"><input type="submit" name="Submit" id="Submit" value="Регистрация" /></td>
      </tr>
      <tr>
        <td align="left">&nbsp;</td>
        <td colspan="2" align="center">&nbsp;</td>
      </tr>
    </table>
  </form>
</div>
Ответить с цитированием
  #4 (permalink)  
Старый 28.11.2010, 16:43
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от Dissonance
Да, но у меня, как вы видите, клонируются поля, поэтому оно в ФФ не работает
Вот пример с полями...

<html>
<head>
<style>
</style>
<script>
function Clone() {
	var o=document.getElementById('test')
	var op=o.getElementsByTagName('input')
	var on=op[0].cloneNode(true)
	on.value=on.value+' '+op.length
	o.appendChild(on)
}
</script>
</head>
<body>
<div id='test'>
	<input type='text' value='test' />
</div>
<input type='button' value='Clone' onclick='Clone()' />
</body>
</html>


И снова везде работает...
Ответить с цитированием
  #5 (permalink)  
Старый 29.11.2010, 01:55
Новичок на форуме
Отправить личное сообщение для Dissonance Посмотреть профиль Найти все сообщения от Dissonance
 
Регистрация: 28.11.2010
Сообщений: 5

Хммм...а у меня почему не работает в ФФ, а в ИЕ работает? Значит я то-то такое делаю, что понимает ИЕ и не понимает ФФ. Не подскажите что?
Ответить с цитированием
  #6 (permalink)  
Старый 29.11.2010, 04:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,118

Dissonance,
<div name="sexImage" id="sexImage"></div> нет name у div используйте проверку на id и будет вам счастье ...
if (theName == "sexImage") замените на if (theId == "sexImage")
Ответить с цитированием
  #7 (permalink)  
Старый 29.11.2010, 23:02
Новичок на форуме
Отправить личное сообщение для Dissonance Посмотреть профиль Найти все сообщения от Dissonance
 
Регистрация: 28.11.2010
Сообщений: 5

Екарный бабай! И правда, работает!
А типа ИЕ плевать, что у дива нет нейма?

Спасибо огромное!
Ответить с цитированием
  #8 (permalink)  
Старый 29.11.2010, 23:24
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Dissonance
А типа ИЕ плевать, что у дива нет нейма?
IE не видит разницы между id и name.
Ответить с цитированием
  #9 (permalink)  
Старый 01.12.2010, 01:23
Новичок на форуме
Отправить личное сообщение для Dissonance Посмотреть профиль Найти все сообщения от Dissonance
 
Регистрация: 28.11.2010
Сообщений: 5

Это они поспешили
Спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
$('#id') не работает для некоторых элементов tmvrus jQuery 10 12.10.2010 15:45
ява-скрипт выборочно работает-не работает zeta777 Internet Explorer 0 20.01.2010 11:41
Динамическая HTML форма (FireFox - работает, IE - не работает) dm1tr1y Общие вопросы Javascript 10 11.12.2009 15:59
Safari + ajax некорректно работает, а в других работает demi AJAX и COMET 35 15.07.2009 14:11
Скрипт меню-гармошки работает выборочно Extern Элементы интерфейса 2 23.02.2009 15:32