2013-05-07 51 views
0

我一直在嘗試下面這個Javascript代碼,這將允許我插入不同的變量到HTML取決於點擊什麼。不幸的是,它不會顯示變量的值,而只顯示如下定義的變量名稱。對Innerhtml的Javascript幫助

<head> 
<script type="text/javascript"> 
var data=new String() 
data="This is what I want to Show" 
function myFunction(text) 
{ 
elem = document.getElementById('replace'); 
elem.innerHTML = text 
} 

</script> 
</head> 

<body> 
<button onclick="myFunction('data')"> Press </button> 

<div id="replace"> 
Test 
</div> 

</body> 
+0

您是否想要將'Test'替換爲'button'值'Press'或者其他不同的值。請詳細說明。 – 2013-05-07 06:57:01

+0

對不起,按下按鈕時,'測試'應替換爲'這是我想顯示' – user2330961 2013-05-07 06:58:25

+0

替換<按鈕onclick = 「myFunction(data)」>按 – Agriesean 2013-05-07 07:00:42

回答

0

data連接到全球window對象。要訪問它:

elem.innerHTML = window[text]; 

此外,不需要new String()作爲字符串可以通過以下方式來定義:

var data = "This is what I want to Show"; 
0

如果「這是你要展示一下」,好把它放在參數,所以,如果有更多的按鈕,你可以重複使用的功能:

<button onclick="myFunction('This is what I want to Show')">Press</button> 

DEMO

4

你傳遞一個字符串,而不是一個變量,使用:

onclick="myFunction(data)" 

的字符串必須用引號,變量(一個參考,在這種情況下,爲字符串)不能(否則」將被評估爲文字字符串)。

順便說一句,JavaScript不要求你給它分配一個值之前,創建一個字符串,你可以只使用:

var data = 'This is what I want to show.'; 

,同時使用innerHTML的作品,如果你正在做的是更新文本內容(也有被認爲是沒有嵌套的節點),你可以簡單地使用:

function myFunction(text) { 
    // the var declaration prevents the variable becoming global 
    var elem = document.getElementById('replace'); 
    elem.appendChild(document.createTextNode(text)); 
} 

,並使其更普遍,實用,避免硬編碼的元素的id在函數內改變,而不是傳遞給它功能:

function myFunction(text, elem) { 
    // testing if the element is a node, if not assume it's a string of the id: 
    var elem = elem.nodeType === 1 ? elem : document.getElementById('replace'); 
    elem.appendChild(document.createTextNode(text)); 
} 

和耦合的上面:

onclick="myFunction(data, 'replace')" 

或者:不使用在線/生硬的JavaScript

onclick="myFunction(data, document.getElementById('replace'))" 

我也強烈,建議,簡單地以便更容易地在一個地方更新要調用的函數,參數和函數本身(而不必遍歷文檔並找到調用該函數的每個實例):

// define the function here 

var buttons = document.getElementsByTagName('button'), 
    replace = document.getElementById('replace'), 
    data = 'Text I want to show.'; 

for (var i = 0, len = buttons.length; i < len; i++){ 
    buttons[i].onclick = function(){ 
     myFunction(data, replace); 
    }; 
} 
0

這是你的代碼..

<button onclick="myFunction('data')"> Press </button> 

因爲這裏是一個字符串,而不是參考對象 '數據' .. ,所以我想這是你想要的..
1。

<button onclick="myFunction(data)"> Press </button> 


2. <button onclick="myFunction('This is what I want to Show')"> Press </button>

0

您使用的是可變文本指定的值與ID潛水取代。 使用此。

elem.innerHTML = data instead elem.innerHTML = text. 

或者將參數傳遞給沒有單個qoute的函數。