2013-04-25 56 views
1

我想寫一個可以生成圖片的網頁,可以從google搜索動態獲取。 這些圖片的搜索條件是不同的,所以我需要多次執行谷歌搜索,而我發現它非常困難。 我嘗試這些代碼從谷歌提供的源代碼修改,但它只能執行搜索一次:在頁面中執行多次google圖片搜索

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
    <title>Google Search API Sample</title> 
<script src="https://www.google.com/jsapi"></script> 
<script type="text/javascript"> 

    google.load('search', '1'); 

    var imageSearch; 
    var keyword="sexy"; 

    function searchComplete() { 


    // Check that we got results 
    if (imageSearch.results && imageSearch.results.length > 0) { 

     // Grab our content div, clear it. 
     var contentDiv = document.getElementById('content'); 
     contentDiv.innerHTML = ''; 


     var results = imageSearch.results; 
     for (var i = 0; i < results.length; i++) { 
     // For each result image to the screen 
     var result = results[i]; 
     var imgContainer = document.createElement('div'); 


     var newImg = document.createElement('img'); 

     // There is also a result.url property which has the escaped version 
     newImg.src=result.tbUrl; 

     imgContainer.appendChild(newImg); 

     // Put our title + image in the content 
     contentDiv.appendChild(imgContainer); 
     } 

     //clear search 
     imageSearch.clearResults(); 

    } 
    } 

    function OnLoad() { 

    // Create an Image Search instance. 
    imageSearch = new google.search.ImageSearch(); 

    // Set searchComplete as the callback function when a search is 
    // complete. The imageSearch object will have results in it. 
    imageSearch.setSearchCompleteCallback(this, searchComplete, null); 

    imageSearch.execute(keyword); 
    } 


    function hi(){ 
     keyword="usa"; 
     alert('hi'); 
     google.setOnLoadCallback(OnLoad); 
     imageSearch.execute(keyword); 
    } 


google.setOnLoadCallback(OnLoad); 

</script> 

</head> 
    <body style="font-family: Arial;border: 0 none;"> 
    <button value="hi" onClick="hi">hi</button> 
<div id="content">Loading...</div> 
</body> 
</html> 

該程序只能在執行方法的OnLoad搜索。實際上,我試圖通過將它放到hi()函數中多次調用google.setOnLoadCallback(OnLoad),但它不起作用。 希望有人能幫助我解決這些問題..

+0

朱利安 - 沒了下文答案幫助呢? – 2014-01-16 19:42:20

回答

0

變化<button value="hi" onClick="hi">hi</button>

<button value="hi" onClick="hi()">hi</button>

0

hi功能不使一個很大的意義對我說:

function hi(){ 
    keyword="usa"; 
    alert('hi'); 
    google.setOnLoadCallback(OnLoad); 
    imageSearch.execute(keyword); 
} 

因爲onLoadCallbak已經設置了已經設置了,並且在OnLoad中執行了搜索。這是在搜索庫加載時調用的。這隻會發生一次,在頁面加載後的某個時間點。

你需要hi做的是你在OnLoad做同樣的事情:

// Create an Image Search instance. 
imageSearch = new google.search.ImageSearch(); 

// set a DIFFERENT callback (if different handling require) 
imageSearch.setSearchCompleteCallback(this, searchComplete, null); 

// set "keyword" to what your next search should be for 
imageSearch.execute(keyword);