2013-10-07 3 views
0

У меня есть форма, содержащая несколько изображений. Как только пользователь нажимает какое-либо изображение, появляется всплывающее окно с эскизами. Как только он нажимает на какое-либо миниатюру, исходное изображение в родительском окне необходимо заменить в соответствии с выбором пользователя (свопинг исходного изображения). Следующий сценарий отлично работает для одного изображения только с logo1 и placeHolder1 переменные жестко закодированы. Как отправить идентификатор изображения из родительского окна во всплывающее окно, так что следующее будет динамическим?javascript - передать значение из родительского дочернего окна и внутри функции

editPage.editForm. logo1 .value = oName

editPage. placeHolder1 .src = "images/user /" + oName;

BTW, изображения и идентификаторы изображений в главном окне могут быть изменены в соответствии с шаблоном формы.

template.php

<script type="text/javascript"> 
function logoWin() { 
window.open('logos.php','logos','height=500,width=700,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes'); 
} 
</script> 

<form action="" id="editForm" name="editForm" enctype="multipart/form-data"> 
<img src=”images/user/logo1.jpg” name="placeHolder1" id="placeHolder1" onclick='logoWin()'> 
<img src=”images/user/logo2.jpg” name="placeHolder2" id="placeHolder2" onclick='logoWin()'> 
<img src=”images/user/logo3.jpg” name="placeHolder3" id="placeHolder3" onclick='logoWin()'> 

<input type="hidden" name="logo1" value="<?php echo $main_logo1; ?>" /> 
<input type="hidden" name="logo2" value="<?php echo $main_logo2; ?>" /> 
<input type="hidden" name="logo3" value="<?php echo $main_logo3; ?>" /> 

<input type="submit" value="Save" id="save"> 
</form> 

logos.php

<script language="JavaScript"> 
    function getFile(oImg){ 
     editPage = eval(window.opener.document) 
     oSrc = oImg.src; 
     lastSlash = oSrc.lastIndexOf('/'); 
     oName = oSrc.substr(lastSlash+1); 
     editPage.editForm.logo1.value = oName 
     editPage. placeHolder1.src = " images/user/" + oName; 
     this.close() 
    } 
    </script> 

[php loop] 
<img src='images/user/".$row->img_file_name."' onclick='getFile(this)'> 
<img src='images/user/".$row->img_file_name."' onclick='getFile(this)'> 
<img src='images/user/".$row->img_file_name."' onclick='getFile(this)'> 

ответ

0

Почему вы используете

eval(window.opener.document); 

Вы можете использовать

var editPage = window.opener.document; 

Вы можете передать идентификатор с url страницы, как указано ниже

function logoWin(id) { 
    window.open('logos.php?id='+id,'logos','height=500,...'); 
} 

Пропустите id, как функции paarameter, как (logoWin(1), logoWin(2)), как указано ниже

<img src=”images/user/logo1.jpg” name="placeHolder1" id="placeHolder1" onclick='logoWin(1)'> 
<img src=”images/user/logo2.jpg” name="placeHolder2" id="placeHolder2" onclick='logoWin(2)'> 

в вашем logos.php file, get it id using

$id = $_GET['id']; // it could be 1 or 2 or 3 and so on 

Затем, вы можете использовать его в качестве JavaScript переменных как

function getFile(oImg){ 
    var id = <?php echo $id; ?>; 
    editPage = eval(window.opener.document); 
    oSrc = oImg.src; 
    lastSlash = oSrc.lastIndexOf('/'); 
    oName = oSrc.substr(lastSlash+1); 
    var logo = 'logo'+id, placeHolder = 'placeHolder'+id; 
    editPage.editForm[logo].value = oName; 
    editPage[placeHolder].src = " images/user/" + oName; 
    this.close(); 
} 
+0

я получаю сообщение об ошибке: Invalid левого присваивания для 'editPage.editForm.logo + id.value = oName' - любого идея? – Simon

+0

Попробуйте обновленный ответ, зайдите в 'getFile'. –

+0

Я получаю: 'Не могу установить значение свойства 'undefined', когда я добавил:' var = oName; 'Я получил:' getFile не определен' – Simon

Смежные вопросы