2013-02-22 3 views
2

Я пишу код. Где я пытаюсь написать форму, которая оказывает длинный список содержимого радио кнопки внутри «фрейма», как показано ниже:доступ к выбранному значению переключателя внутри iframe

<form name="iframeform" method="POST" action="http://localhost/cgi-bin/run"> 
    <tr> 
      <td><iframe id="macList" src="http://localhost/macinfo" style="width:1000px;height:160px"> 
      </iframe></td> 
    </tr> 
    <tr> 
      <input type="hidden" name="macaddr" value=""> 
      <td><input type="submit" name="macselect" value="Continue" id="stdbtn" onclick="getIframeContent()"></td> 
    </tr> 
</form> 

«фрейма» указывает на macinfo страница с код, как показано ниже:

<html> 
<body> 
<table> 
<tr> 
<td><input type=radio name=mac value=E8:B7:48:7B:C0:4A>abc.example.com</td> 
</tr> 
<tr> 
<td><input type=radio name=mac value=00:17:08:5A:81:CF>xyz.cisco.com</td> 
</tr> 
.... 
</table> 
</body> 
</html> 

Как написать функцию getIframeContent() для получения значения выбранного переключателя? пожалуйста, помогите ..

ответ

0

Длинной короткой истории. Чтобы получить доступ к IFrame document использование .contentWindow.document, т.е .:

document.getElementById('macList').contentWindow.document 

и пример кода:

<html> 
    <head> 
    <script type="text/javascript"> 
     function getIframeContent(){ 
     var myIFrame = document.getElementById('macList'); 
     var myIFDoc = myIFrame.contentWindow.document; 
     var myRadios = myIFDoc.getElementsByName("mac"); 

     var checkedItemValue = ""; 
     for(var i=0; i<myRadios.length; i++) { 
      if (myRadios[i].checked) { 
       checkedItemValue = myRadios[i].value; 
      } 
     } 
     if (checkedItemValue) { 
      alert(checkedItemValue); 
     } else {alert('Select address');} 
     } 
    </script> 
    </head> 
<body> 

    <iframe id="macList" src="..." 
     style="width:600px;height:160px"> 
    </iframe> 

    <input type="submit" onclick="getIframeContent();"> 

</body> 
</html> 
0

Вы должны получить массив mac используя document.getElementsByName и петлю над ними:

var allRadios = document.getElementsByName("mac"); 
var checkedItem; 
for(var i=0; i<allRadios.length; i++) { 
    if (allRadios[i].checked) { 
      checkedItem = allRadios[i]; 
      alert('Found checked radio button'); 
    } 
} 

Вы могли бы затем передать checkedItem к вашей getIframeContent функции.

Редактировать

Вы могли бы поделиться checkedItem переменными через две страницы с помощью window

window.checkedItem = allRadios[i]; 
+0

Но я думаю, что код, который вы написали выше, мне нужно написать в «macinfo» HTML-файл. Тогда как я могу получить значение переменной checkItem в функции getIframeContent(), которую я напишу в том же html-файле, где iframe вызывает файл «macinfo»? – vips

+0

@ user1552407 вы можете сохранить его в окне window.checkedItem, который будет работать на нескольких страницах. –

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