请问文本框的问题

    <SCRIPT language=JavaScript type=text/javascript>
    function ChangeToDFM()
    {
        var du = document.getElementById("input_du").value;
        var str1 = du.split(".");
        var du1 = str1[0];
        var tp = "0."+str1[1]
        var tp = String(tp*60);        //这里进行了强制类型转换
        var str2 = tp.split(".");
        var fen =str2[0];
        tp = "0."+str2[1];
        tp = tp*60;
        var miao = tp;
        document.getElementById("calculated_DFM").innerHTML = du1+"°"+fen+"'"+miao+"\"";
    }
    
    function ChangeToDu()
    {
        var d = document.getElementById("input_dfm1").value;
        var f = document.getElementById("input_dfm2").value;
        var m = document.getElementById("input_dfm3").value;
        
        var f = parseFloat(f) + parseFloat(m/60);
        var du = parseFloat(f/60) + parseFloat(d);
        document.getElementById("calculated_du").innerHTML = du;
    }
    </script>

度数:            
<INPUT id=input_du name=du value=113.211>
<INPUT onClick="ChangeToDFM()" type=button value="转 换" name="">结果:
                <SPAN id=calculated_DFM>113°12'39.6"</span>

度分秒:
<INPUT id=input_dfm1 name=dfm1 value="113">°
<INPUT id=input_dfm2 name=dfm2 value="12">'
<INPUT  id=input_dfm3 name=dfm3 value="39.6">"
<INPUT class=but onClick="ChangeToDu()" 
type=button value="转 换" name="">

结果:<SPAN 
id=calculated_du>113.211</SPAN>
         
             

请问一个问题:
这是经纬度转换。
我想只用一个input

就是一次输入完整,而不是一个文本框输入一部分。

请问可以吗。

阅读 2.2k
3 个回答

image.png
经纬度和度分秒不一样,但都有两个值,x和y,所以你要区分x和y的分隔符是什么,不要使用.°′″,其他例如,,| 都随意,然后就是转换,根据分隔符切割,切割后各自转换就行了

//经纬度输入框转度分秒
function ChangeToDFM(e){
    let lnglat = lnglatDom.value.split(/[\,\,\|\s]/g)
    dfmDom.value = LnglatToDFM(lnglat[0].trim()) + ' , ' + LnglatToDFM(lnglat[1].trim())
}
//度分秒输入框转经纬度
function ChangeToDFM(e){
    let lnglat = dfmDom.value.split(/[\,\,\|\s]/g)
    lnglatDom.value = DFMToLnglat(lnglat[0].trim()) + ' , ' + DFMToLnglat(lnglat[1].trim())
}


//经纬度转度分秒格式
function LnglatToDFM (du){
    //return ol.coordinate.degreesToStringHDMS_(du, "")
    var str1 = String(du || '').split(".");
    var du1 = str1[0];
    var tp = "0." + str1[1]
    var tp = String(tp * 60);        //这里进行了强制类型转换
    var str2 = tp.split(".");
    var fen = ('0' + str2[0]).slice(-2);
    var miao = "0." + str2[1];
    miao = (miao * 60).toFixed(0);
    return du1 + "°" + fen + "′" + miao + "″"
}
//度分秒转经纬度格式
function DFMToLnglat (str){
    var locat = String(str).split(/[°\'′\"″]/g)
    var d = locat[0];
    var f = locat[1];
    var m = locat[2];

    f = parseFloat(f) + parseFloat(m/60);
    var du = parseFloat(f/60) + parseFloat(d);
    return +du.toFixed(5);
}

为什么搞这么复杂?你直接用一个input不就是了嘛。。。。

如果就要用三个input的话,就是判断一下关键词,然后跳到一下个input即可

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题