`
<!--jQuery--><script src="//code.jquery.com/jquery-1.12.4.js"></script>
<!--jQuery UI--><script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<!--jQuery UI CSS--><link rel="stylesheet" href="//code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
<script>
function Alert(a){
$("#p")[0].innerHTML = a;
return new Promise(resolve => {
$("#main").dialog({
autoOpen: false,
height: "auto",
width: 400,
modal: true,
resizable: false,
buttons: {
"Ok": () => {
$(this).dialog("close");
resolve(true);
}
}
});
});
}
</script>
<script>
$(document).ready(function(){
await Alert("test");
});
</script>
<div title="Message!" id="main">
<p id="p"></p>
</div>
`
I'm wanting it to open a popup with the popup title of Message! and with the text of test. I've tried so many things to fix this but I can't. I've come to the conclusion that it's not selecting the elements properly.
CodePudding user response:
conclusion that it's not selecting the elements properly
That's not correct, your code is working fine. Just that the dialog is not opened because autoOpen is set to false.
I tried this code, hope it helps:
(also I don't think you need Promise)
<!DOCTYPE html>
<html>
<body>
<div title="Message!" id="main">
<p id="p">Paragraph to change!</p>
</div>
<!--jQuery-->
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<!--jQuery UI-->
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<!--jQuery UI CSS-->
<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
<script>
function Alert(a) {
alert("a: " a)
$("#p")[0].innerHTML = "I have changed!";
$("#main").dialog({
autoOpen: true,
height: "auto",
width: 400,
modal: true,
resizable: false,
buttons: {
"Ok": () => {
$(this).dialog("close");
resolve(true);
}
}
});
}
$("document").ready(function() {
Alert("test");
});
</script>
</body>
</html>
Just one thing not related to your error though just informing you so you will remember this, this code is actually not right
$(document).ready(function(){
await Alert("test");
});
The await keyword is only valid inside async functions within regular JavaScript code.
CodePudding user response:
Here is what I suggest:
The first thing I noticed is that there is no
asyncon the left of function on your document ready. Try addingasyncand see if it solves the problemOr may by try to combine that 2 script tags into one
If it still doesn't work, try logging it out with
console.log()or regularalert()on your value, see if it's even return something at all. Maybe that$("#p")doesn't need the first index to be accessible because it is an id, not a class
