Показать сообщение отдельно
  #1 (permalink)  
Старый 16.05.2017, 18:54
Интересующийся
Отправить личное сообщение для Fortun Посмотреть профиль Найти все сообщения от Fortun
 
Регистрация: 13.06.2013
Сообщений: 15

Нужна помощь с видимостью переменной.
Здравствуйте.

Вопрос в следующем. Есть ряд сайтов на которых нужно найти ряд ссылок. Был написан такой скрипт (ниже).
Проблема в том, что у меня никак не получается разобраться с видимостью переменной. Внутри $.get(url, function(data) da и net проставляются корректно, но не видны урлы из массива (стоит undefined), а вне $.get(url, function(data) урлы проставляются корректно, но вместо da и net стоит undefined.
Понять что именно нужно исправить я увы так и не смог, хотя и ясно что дело в видимости "chevo". Или в неправильно поставленном for.


<!DOCTYPE html>
<html>
<head>
	<title>Title</title>
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
<button>Get Meta Data</button>
<table>
</table>
<script type="text/javascript" src = "script.js"></script>
</body>
</html>


Код:
$('button').click(function(){

var gde = ['http://site1.ru',
'http://site2.ru',
'http://site3.ru'];
var chto = ['http://url1.ru',
'http://url1.ru',
'http://url1.ru'];	
	for (i=0; i<gde.length; i++){		
  var query = 'select * from html where url="' + gde[i] + '" and xpath="*"';
  var url = 'https://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent(query);
  var what = chto[i];
  var chevo;

  $.get(url, function(data) {
    var html = $(data).find('html');    
    var finding = 'a[href*="'+ what + '"]';
    if(html.find(finding).attr('href')){    	
    	var chevo = "da"
    } else {    	
	var chevo = "net"
    }

// $("table").append("<tr><td class='where'>" + gde[i] + "</td><td class='what'>" + chto[i] + "</td><td class='result'>" + chevo + "</td></tr>")
	  });

$("table").append("<tr><td class='where'>" + gde[i] + "</td><td class='what'>" + chto[i] + "</td><td class='result'>" + chevo + "</td></tr>")
}
});

Последний раз редактировалось Fortun, 16.05.2017 в 19:02.
Ответить с цитированием