内联onclick JavaScript变量

16

我有一个JavaScript,它在这个HTML上面,有没有办法将它传递到下面的代码中的EditBanner(JS Variable Here)内?

//EditBanner to be changed to pass a Js variable.
<input id="EditBanner" type="button" value="Edit Image" onclick="EditBanner();"/>

3
你尝试过像 onclick="EditBanner(myVar)" 这样的东西吗? - Michael Paulukonis
2
嗯,不把你的代码内联化怎么样? - Michael Paulukonis
3个回答

29

有一整个实践认为内联函数/样式是一个不好的主意。考虑到您已经为按钮设置了ID,请参考

JS

var myvar=15;
function init(){
    document.getElementById('EditBanner').onclick=function(){EditBanner(myvar);};
}
window.onload=init;

HTML

<input id="EditBanner" type="button"  value="Edit Image" />

1
我同意最佳实践是使用事件处理程序,但内联也可以并且确实有效(不适用于大规模),只需要看看哪种方法最适合您的项目。 - Bobby Borszich
1
考虑到他已经为按钮设置了ID,并在代码中的某个地方设置了myvar,我们可以假设他已经有了一个<script>标签,可以添加事件处理程序并获取正确的元素...没有理由他应该使用内联事件。 - Khez
当然它“可以”工作——但使用GOTO和3000行的方法也是如此。不进行内联是任何项目的最佳选择。 - Michael Paulukonis
Michael:“不进行内联是任何项目的最佳选择”——只要加上“几乎”,你就百分之百正确了。(只是让我用7行JS代码做一个5分钟的临时测试项目,以测试一些Firebase行为,而不期望遭到西班牙审判。;) - Sz.

5
<script>var myVar = 15;</script>
<input id="EditBanner" type="button" value="Edit Image" onclick="EditBanner(myVar);"/>

第一行不应该被包含在<script>标签中吗? - Steven Lu
@StevenLu:是的,应该可以。我只是想指出如何使用变量。 - gen_Eric

5
是的,JavaScript变量将存在于它们被创建的作用域中。
var bannerID = 55;

<input id="EditBanner" type="button" 
  value="Edit Image" onclick="EditBanner(bannerID);"/>


function EditBanner(id) {
   //Do something with id
}

如果您使用事件处理程序和jQuery,那么也很简单。
$("#EditBanner").click(function() {
   EditBanner(bannerID);
});

2
这样不行,你不能在HTML中使用那样的变量。请改用 onclick="EditBanner(bannerID);" - gen_Eric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接