2011-04-18 71 views
0

我四處張望,發現這個代碼,並試圖讓它工作,但沒有運氣。基本上,如果你點擊按鈕,它假設用Hello world代替span中的文本。javascript替換範圍內的文本

<script type="text/javascript"> 
    $(function(){         
      $("#change").click(function(){    

       var onlineSpan = $("#people").text().replace("Hello World"); 
       $("#people").text(onlineSpan); 

      }); 

      $("#refresh").click(function(){ 
       location.reload(); 
      }); 

     }); 
</script> 

<span id="people">content to replace</span> 
<button id="change"> Change </button> 

我想要做的就是替換跨距中的文本,但使用數組從數組,而不是使用一個按鈕,隨機進入更新間隔每60秒。此外,跨度位於iframe內,並且此iframe位於同一個域中。

的iframe 1周

var myCars = new Array(); 
myCars[0] = "Saab"; 
myCars[1] = "Volvo"; 
myCars[2] = "BMW"; 

$(function(){         
    $("#change").click(function(){    

    var carSpan = $("#cars").text().replace(myCars); 
    $("#cars").text(carSpan); 

    }); 
}); 

的iframe 2

<span id="cars">content to replace</span> 
+1

你引述的JavaScript代碼使用JQuery庫。您在問題的任何地方都沒有提到JQuery,因此不確定您是否使用它。如果沒有,這個代碼將不起作用。 – Spudley 2011-04-18 16:02:52

+0

我在jsfiddle上測試了它 – FAFAFOHI 2011-04-18 16:12:55

+0

澄清(糾正我,如果我錯了):你有一個包含jquery include,jquery代碼和按鈕的頁面,並要求此按鈕在iframe中更改某些內容。 我不知道你爲什麼要使用iframe,因爲javascript可以操縱DOM,而不需要刷新頁面/有一個iframe。如果你需要數據是動態的(來自數據庫或從其他地方獲取),那麼你可以使用AJAX。如果你使用jQuery庫,這並不難。這樣,您可以將所有代碼顯示在1頁上(+腳本包含標籤)。 – Danny 2011-04-18 16:14:16

回答

1

對於以一定間隔執行JavaScript(每60秒),使用setInterval。要得到一個隨機數,按照here的描述使用Math.random()。

var myCars = new Array(); 
myCars[0] = "Saab"; 
myCars[1] = "Volvo"; 
myCars[2] = "BMW"; 

function changeCars() { 
    var randomI = Math.floor(Math.random()*myCars.length); 
    var carSpan = $("#cars").html(myCars[randomI]); 
} 

$(document).ready(function(){         
    setInterval(changeCars, 60000); 
}); 

您可以see this in action

+0

我測試了它,它不工作http://jsfiddle.net/9nqk2/ – FAFAFOHI 2011-04-18 16:14:48

+0

@FAFAOHI - 你有作爲JS庫設置在左側的Mootools 1.3。將其更改爲jQuery 1.5.1,它將起作用。如果你有螢火蟲,你應該看到'$(document).ready()不是函數'的錯誤。看看我提供給jsFiddle的鏈接 - 它正在工作。容易犯錯。 – justkt 2011-04-18 16:18:48

+0

哈哈沒有看到我怎麼錯過了。在var carSpan的函數ChangeCars中最後一件事是添加了$ parent.frames。(「#cars」)。html(myCars [randomI]);因爲跨度是在iframe中,但它沒有工作任何想法如何得到這個工作? – FAFAFOHI 2011-04-18 18:27:09

0

好,如果你想新的價值附加到跨度:

var carSpanText = $('#cars').text(), 
    randomnum = Math.floor(Math.random() * myCars.length); 
$('#cars').text(carSpanText + myCars[randomnum]); 

,如果你只是需要替換文本,然後:

var randomnum = Math.floor(Math.random() * myCars.length); 
$('#cars').text(myCars[randomnum]);