gpt4 book ai didi

javascript - 返回 innerHtml 的函数结果未定义,为什么

转载 作者:行者123 更新时间:2023-12-04 00:50:58 27 4
gpt4 key购买 nike

<html>
<body>
<p id="GeoElem">
</p>

//当按下这个按钮时,我应该被重定向到具有在 Func2 中计算的值的 url

<button id="myButton2" onClick=myFunct3()> Click me </button> 
<script>

//构建我的 url 的函数; Func2 返回未定义

function myFunc3() { 
window.location.href = window.location.href + "/search/" + Func2();
}

//需要Func2调用Geo计算位置到元素内部html中

function Func2() { 
Geo();
var x = document.getElementById("GeoElem");
return strip(x.innerHTML); //return the innerHTML
}

//应该将位置存储在名为 GeoElem 的元素的 innerHTML 中

function Geo() { 

var x = document.getElementById("GeoElem");

function showPosition(position) {
x.innerHTML = position.coords.latitude + ";" + position.coords.longitude;
}

if (navigator.geolocation) {
x.innerHTML = navigator.geolocation.getCurrentPosition(showPosition);
}
else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
//return x.innerHTML;

}

//这个函数应该返回纯文本,去掉 html

function strip(html)
{
var tmp = document.createElement("DIV");
tmp.innerHTML = html;
return tmp.textContent || tmp.innerText || "";
}
</script>
</body>
</html>

===============证明我的主要功能 (Geo) 有效:....但是,当您像上面的示例那样将所有内容放在一起时,它会在 url 中返回未定义而不是坐标。

这是一个函数示例,它在 html 元素中返回屏幕上的坐标,但我希望它们由上面尝试的函数返回

<p id="idx"></p>
<script>
var x = document.getElementById("idx");

function showPosition(position) {
x.innerHTML = position.coords.latitude + ";" + position.coords.longitude;
}

if (navigator.geolocation) {
x.innerHTML = navigator.geolocation.getCurrentPosition(showPosition);
}
else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
</script>

注意。最好让函数 Geo 直接返回坐标,而不将它们存储到元素的 innerHTML 中,但这不起作用:

function handle_geolocation_query() {
navigator.geolocation.getCurrentPosition(function (position) {
var position = {
lat: position.coords.latitude,
lng: position.coords.longitude
};

var lat = position.lat;
var long = position.lng;
return (lat + ';' + long);
})
}

这两种方法中的任何一种都可以。要么直接计算它并从函数返回它,要么通过 html 元素获取它并像这样传递它 window.location.href = window.location.href + "/search/" + handle_geolocation_query();myFunct3

最佳答案

function myFunction() {

var x = document.getElementById("id22");

function showPosition(position) { //When the user allows Geolocation, you could get the position, otherwise you can't
x.innerHTML = position !== undefined ? position.coords.latitude + ";" + position.coords.longitude : "You don't have allow Geo";
}

if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition); //At this point, the Geolocation is ever undefined
x.innerHTML = 'Please allow Geo!';
}
else {
x.innerHTML = "Geolocation is not supported by this browser.";
}

}

navigator.geolocation.getCurrentPosition 函数不返回任何内容(另见 https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition),因此默认返回未定义。

希望对您有所帮助。

关于javascript - 返回 innerHtml 的函数结果未定义,为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38518508/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com