2016-04-21 77 views
0

這是一個javascript函數傳遞參數到javascript函數

<script> 
function func1(var g){ 
alert(document.getElementsByTagName('p')[0].innerHTML); 
} 
</script> 

如何從函數調用傳遞值0以上的函數定義。

<p onmouseover="func1(0)";>First para</p> 
+6

這是一個JavaScript語法錯誤,更準確。在形式參數列表中不能包含'var'關鍵字。保持瀏覽器的開發者控制檯處於打開狀態,以便您能看到錯誤消息。 – Pointy

+0

OP,這個函數中的'g'意味着什麼?目前看來無關緊要。 – Andy

回答

2

將其更改爲

<script> 
function func1(g){ 
    alert(document.getElementsByTagName('p')[0].innerHTML); 
} 
</script> 

你需要看到控制檯日誌,以彈出相關的錯誤。

在這種情況下,您正在函數參數中聲明不允許的變量,您可以找到更多關於functionhere的信息。

+0

問題仍然存在 - 爲什麼要傳入該參數,如果它不會被使用,除非'g'是爲了替換索引。 – Andy

+1

雖然它會工作肯定..你必須有有效的描述,這將使OP瞭解的東西! _Change it /試試這個_將無助於事業... – Rayon

+0

@Andy可能是他剛剛粘貼的相關代碼。 – JagsSparrow

1

由於您在使用[0]來定位第一段時,您的功能應該是;

function func1(g){ 
    alert(document.getElementsByTagName('p')[g].innerHTML); 
} 

更規範JS的方法是一個事件監聽器連接使用JavaScript的元素,而不是內聯代碼:

var paras = document.getElementsByTagName('p'); 

[].slice.call(paras).forEach(function (el, i) { 
    el.addEventListener('mouseover', func1.bind(func1, i), false); 
}); 

function func1(g){ 
    console.log(paras[g].innerHTML); 
} 

DEMO

但也許是最好的辦法是使用事件代表團,這樣你就不會將聽衆添加到全部的元素中。事件偵聽器從第添加到父元素和追趕的事件,因爲他們冒泡的DOM:

var div = document.getElementById('paras'); 

div.addEventListener('mouseover', func1, false); 

function func1(e) { 
    var el = e.target; 
    if (el.nodeType === 1 && el.nodeName === 'P') { 
    console.log(el.innerHTML); 
    } 
} 

DEMO