2014-05-09 2 views
1

Я получил HTML-страницу с этим содержанием, называется «page1.html»:JQuery получить значение переменной из другой страницы HTML

<div> 
    <div id="content"> 
     content 
    </div> 
    <script type="text/javascript"> 
     var x=5; 
     var y=2; 
    </script> 
    <div id="other">Some other content</div> 
</div> 

В другой HTML-страницы, я хотел бы получить значение из переменная «x» (5). Это главная страница:

<!DOCTYPE html> 
<html> 
<head lang="en"> 
    <script type="text/javascript" src="app.js"></script> 
</head> 
<body> 
    <div id="new_content"></div> 
</body> 
</html> 

И это app.js сценарий:

$(function(){ 
    $.get('page1.html', function(result){ 
     var obj = $(result).find('script'); 
     $(this).append($('#new_content').text(obj.html())); 
    }); 
}); 

И результат "вар х = 5; вар у = 2;". Есть ли способ получить только значение 5 из var x?

Спасибо за помощь.

EDIT: Я забыл написать, что это всего лишь пример, код в скрипте в page1.html более сложный, чем показанный. Объект «obj» в app.js является [object htmlscriptelement], поэтому я хотел бы знать, существует ли метод/att, который я могу использовать для прямого доступа к var x.

ответ

0

Это кажется немного странным, что нужно попытаться сделать.

Я сделаю все возможное, чтобы ответить, но было бы неплохо получить немного больше информации о том, почему вы хотите сделать это, поскольку это может быть, что есть лучший, более чистый способ сделать это.

Моя рекомендация с информацией, которую вы указали, заключается в назначении значений объекту DOM, jQuery построен для перемещения DOM и манипулирования им, это не очень хорошая идея, чтобы попытаться разобрать необработанный javascript для извлечения переменные значения.

Итак, страница 1 будет выглядеть следующим образом:

<div> 
    <div id="content"> 
     content 
    </div> 
    <div class="myData" data-x="5" data-y="2" /> 
    <div id="other">Some other content</div> 
</div> 

Тогда мой JQuery будет выглядеть примерно так:

$(function(){ 
    $.get('page1.html', function(result){ 
     var obj = $(result).find('script'); 
     var page1X = $(result).find('div.myData').data('x'); 
     var page1Y = $(result).find('div.myData').data('y'); 
    }); 
}); 

Это просто псевдо-код, но, надеюсь, вы получите идею.

Справочные ссылки:

+0

Привет, мне нужно загружать разные страницы на моей индексной странице (последовательно), но я хочу разрешить пользователю перейти на следующую страницу только в том случае, если установлен установленный флаг в загружаемом в текущий момент содержимом. – user3505947

+1

И как jolyonruss предложить и добавить значение данных json-объекта (построенного со всем, что вам нужно)? – keypaul

0

вы могли бы попытаться прокомментировать чан у = ... линии, прежде чем вставить код, как:

$(function(){ 
    $.get('page1.html', function(result){ 
     var obj = $(result).find('script'); 
     $(this).append($('#new_content').text(obj.html().replace('var y','//var y'))); 
    }); 
}); 
+0

Привет, я редактировал оригинальный пост с подробной информацией. – user3505947

4

Или вы можете просто использовать localStorage таким образом:

page1.html:

localStorage.setItem("x", "value"); //setter 

page2.html:

var x = localStorage.x; //getter 
Смежные вопросы