外部JavaScript可以从不同的文件访问DOM元素吗?

时间:2015-12-31 16:21:01

标签: javascript html dom

最近刚开始在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)吗?

5 个答案:

答案 0 :(得分:2)

我建议不要回避使用内联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;
});

答案 1 :(得分:1)

document.getElementById( id )将id参数作为字符串

使用

document.getElementById("otherelement");
document.getElementById("submit");

还会移除</td>,因为您的代码中没有<tr>

答案 2 :(得分:0)

如果您不使用引号来包装字符串,javascript将尝试查找名为submitotherelement的变量。尝试添加这样的引号:

function getValue() {
   "use strict";
   document.getElementById("submit").value = document.getElementById("otherelement").value;
}

答案 3 :(得分:0)

如果您的HTML元素具有id属性,则JS引擎会自动将其转换为变量..

e.g。 <input type="submit" name="submit" id="submit" onclick="getValue()" value="Submit"></td>

等于JS代码中的var submit(考虑到在完全呈现DOM时加载JS文件)。

在每个HTML页面中,元素id都是唯一的,这就是为什么它被转换为变量并且 将被覆盖,直到您决定为止。

答案 4 :(得分:0)

  

我想知道你何时使用外部JavaScript   你必须传入html元素或者js文件可以看到   他们的身份

是的,你可以看到ID:

&#13;
&#13;
function whoAmI(e) {
  document.getElementById('output').textContent = e.target.id;
}
&#13;
<button id='Hiii' onclick='whoAmI(event)'>Check ID</button>
<p id='output'></p>
&#13;
&#13;
&#13;