2015-12-02 3 views
0

Ну, что мне нужно, это сценарий, что работает следующим образом,Почему этот скрипт не работает?

Каждый новый раз при открытии страницы, то iframe должен выбрать 1 из 50 звена, чтобы показать случайно, как это возможно. Теперь я провел некоторое исследование, и я делаю следующий сценарий. Он работает на JS (dot) DO, но он не будет работать на jsbin, и когда я попробую Chrome, он не будет работать. Поэтому мне нужна небольшая помощь, я надеюсь, что кто-то может мне помочь!

<iframe id="frame"></iframe> 
     <script> 
      (function() { 
       var e = document.getElementById('frame'), 
        f = function(el, url) { 
         el.src = url; 
        }, 
        urls = [   
        'link1', 
         // all links 1/50 
        'link50'], 
        i = 0, 
        l = urls.length; 
      f(e, urls[Math.round(Math.random()*50)]); 
      })(); 


     </script> 

(простите за плохой английский, это не мой основной язык

+0

проверить консоль на наличие ошибок –

+0

я бы предложил использовать переменную 'L' и заменить' 'Math.round' на Math.floor':' F (E, URLs [Math.floor (Math. random() * l)]); – Xufox

+0

@Xufox 'urls [Math.floor (Math.random() * (l-1))]' правильнее, потому что индекс 50 не существует – R3tep

ответ

0

Ну, во-первых, вы не можете просто открыть любую ссылку в из-за ограничений безопасности браузера. Вы можете прочитать на How to show google.com in an iframe? .

Теперь давайте поговорим о самом коде.

<iframe id="frame"></iframe> 
    <script> 
     (function() { 
      var e = document.getElementById('frame'), 
       f = function(el, url) { 
        el.src = url; 
       }, 
       urls = [   
       'link1', 
        // all links 1/50 
       'link50'], 
       i = 0, 
       l = urls.length; 
     f(e, urls[Math.round(Math.random()*50)]); 
     })(); 


    </script> 

Почему вы установите переменную i? вы не можете использовать это я n ваш код и можете удалить его. Почему вы несколько Math.random() от 50, если у вас есть l. Умножьте его на l, это более удобно. Рассмотрим следующий пример:

<div id="divID"></div> 
<script type="text/javascript"> 
    var e = document.getElementById('divID'), 
    f = function(el, url) { 
     el.innerHTML = url; 
    }, 
    urls = ['https://www.google.ru/', 'https://www.yandex.com/', 'http://www.bing.com/', 'https://www.yahoo.com/', 'https://duckduckgo.com/'], 
    urlsLength = urls.length; 
    f(e, urls[Math.floor(Math.random() * urlsLength)]); 
</script> 

Вы можете проверить рабочий пример на http://jsfiddle.net/tfno031a/ (Просто нажмите кнопку Выполнить в верхнем левом углу). Вы должны слегка изменить его для загрузки содержимого в (если у вас есть локальные URL-адреса). Я надеюсь, что это поможет вам. Удачи!

EDIT

Рабочий пример. У меня есть файл 1.html в том же каталоге с основным файлом. Также обратите внимание на Math.floor(), я был неосторожен в начале.

<iframe id='iframeID'></iframe> 
<script type="text/javascript"> 
    var e = document.getElementById('iframeID'), 
    f = function(el, url) { 
    el.src = url; 
    }, 
    urls = ['1.html'], 
    urlsLength = urls.length; 
    window.onload = f(e, urls[Math.floor(Math.random() * urlsLength)]); 
</script> 
+0

Теперь я вижу, что это намного лучше, но все же я не понимаю, когда я помещаю ссылку в iframe, это работает, и когда я добавьте ссылку со скриптом, это не сработает, вот что мне нужно. с div он отлично работает, но только iframe не работает сейчас – nederlandb0y

+0

@ nederlandb0y Несколько вещей, которые, я думаю, могут быть неправильными: 1. Вы не изменили innerHTML на src. 2. Неверный идентификатор. 3. Ваш DOM загружается после javascript. Установите триггер «готовность к документу», чтобы проверить его. 4. Вы используете неправильный путь к html-файлу. – Georgy

+0

я до сих пор не понимаю, я стараюсь, но