[英]Can external JavaScript access DOM elements from a different file?
最近剛開始在Dreamweaver中工作。 我想知道當您使用外部javascript文件時,是否必須傳遞html元素,或者js文件可以看到其ID? 例如;
<body>
<script src="client.js"></script>
<input type="submit" name="submit" id="submit" onclick="getValue()" value="Submit"></td>
然后在client.js文件中
function getValue() {
"use strict";
document.getElementById(submit).value = document.getElementById(otherelement).value;
}
首先這是行不通的,我知道還有其他錯誤,但是主要是-client.js文件可以查看和使用getElementById(submit)
和getElementById(otherelement)
嗎?
我建議您不要使用內聯JavaScript元素,而應采用其他方式。 我建議使用addEventListener()
綁定來自JavaScript的事件。
因此,刪除onclick
屬性,然后執行以下操作:
<input type="submit" name="submit" id="submit" value="Submit">
我們將在JavaScript中添加事件。 為此,需要在加載頁面(DOM) 之后運行腳本。 您可以使用window.onload = function(){}
進行此操作,也可以在頁面末尾( </body>
之前)加載腳本。
無論如何,在您的JavaScript中,您要使用:
document.getElementById("submit").addEventListener('click', function(event){
// NOTE: You are clicking a submit button. After this function runs,
// then the form will be submitted. If you want to *stop* that, you can
// use the following:
// event.preventDefault();
// In here `this` will be the element that was clicked, the submit button
this.value = document.getElementById('otherelement').value;
});
document.getElementById( id )
將id參數作為字符串
采用
document.getElementById("otherelement");
document.getElementById("submit");
還要刪除</td>
因為您的代碼中沒有<tr>
如果不使用引號來包裝你的字符串,JavaScript就試圖找到命名變量submit
或otherelement
。 嘗試像這樣添加引號:
function getValue() {
"use strict";
document.getElementById("submit").value = document.getElementById("otherelement").value;
}
如果您的HTML元素具有id
屬性,則JS引擎會自動將其轉換為變量。
例如<input type="submit" name="submit" id="submit" onclick="getValue()" value="Submit"></td>
等於您的JS代碼中的var submit
(考慮到在完全呈現DOM后加載JS文件)。
在每個HTML頁面中,元素id
都是唯一的,這就是為什么將其轉換為變量並且在您決定這樣做之前不會將其覆蓋的原因。
我想知道當您使用外部javascript文件時,是否必須傳遞html元素,或者js文件可以看到其ID?
是的,您可以看到ID:
function whoAmI(e) { document.getElementById('output').textContent = e.target.id; }
<button id='Hiii' onclick='whoAmI(event)'>Check ID</button> <p id='output'></p>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.