Issue: Can not get handler of an element by using dojo.byId(“element id”) ;
You want to add an event to a button, code goes like this:
<script>
require(["dojo","dojo/on","dijit/registry","dojo/dom",
"dojox/mobile",
"dojox/mobile/parser",
"dojox/mobile/SwapView",
"dojox/mobile/PageIndicator",
"dojox/mobile/Heading","dojox/mobile/ScrollableView",
"dojox/mobile/EdgeToEdgeList","dojox/mobile/Button”
],function(dojo,on,registry,dom){
var handler = dojo.byId("btn");
on(handler, "click", function(e){
alert("i am clicked");
});
});
</script>
<script type="text/javascript" src="engmain.js"></script>
</head>
<body style="visibility:hidden">
<div id="mainview" class="mainview" data-dojo-type="dojox/mobile/ScrollableView">
<button id="btn" data-dojo-type="dojox/mobile/Button">click me
<img src="images/bottomarrow.png"/>
</button>
<div id="result" ></div>
maincontent
</div>
</body>
No matter how hard you clicked the button, the button just did not give you any response.
And you will see this in your debugging environment (FireBug) – target is null
Possible Cause:
DOM tree didn't ready when dojo.byId(“elementID” executed, so the element you specified cannot be identified.
Reference: http://www.jetwu.cn/archives/101
Solution:
Ensure that you pull in dojo/domReady! when you need to do something with element of the DOM tree.
The code is as below, for your reference.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>slip view</title>
<link rel="stylesheet" href="">
<script type="text/javascript" src="dojox/mobile/deviceTheme.js"></script>
<script type="text/javascript" src="dojo/dojo.js"
data-dojo-config="isDebug:false, parseOnLoad: true, debugAtAllCosts:false"></script>
<script>
require(["dojo","dojo/on","dijit/registry","dojo/dom",
"dojox/mobile",
"dojox/mobile/parser",
"dojox/mobile/SwapView",
"dojox/mobile/PageIndicator",
"dojox/mobile/Heading","dojox/mobile/ScrollableView",
"dojox/mobile/EdgeToEdgeList","dojox/mobile/Button","dojo/domReady!"
],function(dojo,on,registry,dom){
var handler = dojo.byId("btn");
on(handler, "click", function(e){
alert("i am clicked");
});
});
</script>
<script type="text/javascript" src="engmain.js"></script>
</head>
<body style="visibility:hidden">
<div id="mainview" class="mainview" data-dojo-type="dojox/mobile/ScrollableView">
<button id="btn" data-dojo-type="dojox/mobile/Button">click me
<img src="images/bottomarrow.png"/>
</button>
<div id="result" ></div>
main content
</div>
</body>
</html>