2012-07-04 4 views
0

Мне нужно использовать javascript для изменения части iframe src, есть ли способ изменить «500» на «800» в этом iframe src? Я пробовал следующий код, но он не работал. Если кто-то может помочь, это будет оценено по достоинству.Замена только части iframe src

 function bigPhotosets() { 
      $('iframe.photoset').each(function(){ 
       $(this).attr('src').replace('500','800'); 
       $(this).attr('width').replace('500','800'); 
      }); 
     } 

     bigPhotosets(); 

ответ

3

.replace() возвращает новую строку, которую вы ничего не делаете с.

Вы должны установить src эту новую строку:

var newSrc = $(this).attr('src').replace('500','800'); 
$(this).attr('src', newSrc); 

Есть также более быстрые способы сделать это.

+0

Это не сработало ... см. На http://jtestblog1.tumblr.com/post/26387860417/aquaticwonder-dancing-alone-portraits-by-caiti –

0

Этот код просто возвращает атрибут src, заменяя некоторый текст и ничего не делая. Попробуйте следующее:

$(this).attr('src', $(this).attr('src').replace('500','800')); 
0

Я считаю, что ответ SLaks правильный. Когда я использовал свой код в консоли на странице tumblr, он правильно изменил исходный код. Однако ширина не изменилась, и необходимо отрегулировать высоту.

Я наклеил следующий код на консоль (в Chrome) на http://jtestblog1.tumblr.com/post/26387860417/aquaticwonder-dancing-alone-portraits-by-caiti, и он работал так, как вы говорите, что он должен работать.

function bigPhotosets() { 
    $('iframe.photoset').each(function(){ 
     var newSrc = $(this).attr('src').replace('500','800'); 
     $(this).attr('src', newSrc).width(800).height(912); 
    }); 
} 

bigPhotosets(); 

я бы беспокоился о другом 500 существующих в вашей URL. Это испортит URL. Если это всегда будет в конце URL-адреса, вы можете использовать регулярное выражение, которое заменит только 500, если оно встречается только в конце URL-адреса.

т.е. изменить 3-й линии в

var newSrc = $(this).attr('src').replace(/500$/,'800'); 

Она будет работать только если 500 находится в конце URL (который, если размер всегда будет находиться в конце URL, это хорошо вещь). На вашем tumblr размер равен в конце URL-адреса, поэтому это регулярное выражение работает.

+0

не сработало .. что я делаю неправильно ? Http: //jtestblog1.tumblr.com/post/26387860417/aquaticwonder-dancing-alone-portraits-by-caiti & Я снова изменил тему, и теперь это 600, поэтому 912 нужно будет изменить 1, а также некоторые фотосеты имеют больше фотографий, поэтому я не могу используйте высоту набора. –

+0

Не знаю. Я изменил «500» на «600» в своем фрагменте, вставил его в консоль на вашей странице, и он снова работал. Вы не можете иметь «авто» высоту для iframe, так что это может оказаться затруднительным. – CWSpear

+0

У вас есть ошибка: «infinitescroll не является функцией» в строке 1216. Возможно, поэтому у вас проблемы. – CWSpear

0

Самый простой способ. Заменить старый SRC с тем же ЦСИ, но с 500 заменен 800.

$(this).attr('src', $(this).attr('src').replace('500','800')); 

В вашей ссылке в комментариях к первому ответу это не работает, потому что нет но в iframe src.

Также обратите внимание, что вам нужно будет позаботиться об атрибуте width и ширине css.

Который даст вам

$(this).attr('width', 800); 
$(this).css('width', 800); 

После этого осталось только отрегулировать высоту фрейма пропорционально тому, как вы изменили ширину. Что такое oldHeight * 800/500 (или в вашем конкретном случае 800/600).