Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 等待HTML输入元素获得值_Javascript_Html - Fatal编程技术网

Javascript 等待HTML输入元素获得值

Javascript 等待HTML输入元素获得值,javascript,html,Javascript,Html,我有一个HTML输入元素 <input type = "hidden" name = "MY_ELEMENT" id = "MY_ELEMENT" /> 请对此问题提出一些替代方案。您创建了错误的函数。有办法做到这一点 在HTML上使用onkeyup或onchange事件 或 在JS中为该元素创建eventListener: document.getElementById(“我的元素”).addEventListener(“更改”,函数(){ //做点什么 }); 如果您使用的是

我有一个HTML输入元素

<input type = "hidden" name = "MY_ELEMENT" id = "MY_ELEMENT" />

请对此问题提出一些替代方案。

您创建了错误的函数。有办法做到这一点

  • 在HTML上使用onkeyup或onchange事件
  • 在JS中为该元素创建eventListener:

    document.getElementById(“我的元素”).addEventListener(“更改”,函数(){
    //做点什么
    });

  • 如果您使用的是JQuery,您可以这样做:

  • $(“#我的_元素”)。在(“keyup”,function()上{
    //做点什么
    })

    编辑 表格是隐藏的。我想你可以这样做:

    function hiddenValue(){
        var hvalue = "some_value";
        document.getElementById("hiddenForm").innerHTML = '<input type="hidden" value="' + hvalue + '" name="element" id="element" />';
    
        //Call another function:
        //Or you can pass the value to the function like thid:
        //doSomething(hvalue);
        doSomething();
    }
    
    function doSomething(hvalue = ''){
        //do in here
    }
    
    函数hiddenValue(){
    var hvalue=“某些值”;
    document.getElementById(“hiddenForm”).innerHTML='';
    //调用另一个函数:
    //或者,您可以将值传递给thid这样的函数:
    //剂量测定法(hvalue);
    doSomething();
    }
    函数doSomething(hvalue=''){
    //你在这里干什么
    }
    

    在HTML中,只需将
    div
    span
    id=“hiddenForm”
    放在一起,也许使用自定义setter和getter会有所帮助

    var el=document.getElementById('my-element');
    el._值=el值;
    Object.defineProperty(el,“值”{
    获取:()=>此值,
    set:(newValue)=>{
    log('Set:'+newValue);
    //值已更改,请在此处执行操作
    此值为.\u value=newValue;
    }
    });
    //这是为了模拟稍后以编程方式设置的输入值
    设置超时(()=>{
    el.value='100'
    console.log('编程更新的值:'+el.Value);
    },2000);
    
    对于类似的问题,这里有另一个答案:@Nisarg我不认为这是所述问题的重复。。根据我所做的快速测试,
    oninput
    onchange
    (正如链接问题中接受的答案所建议的那样)在以编程方式输入值时从未触发changed@ChiragRavindra您可以简单地使用以下命令从代码触发事件:
    $(“#MY_元素”).trigger(“change”)。或者更好,他们可以在设置值后简单地调用函数
    anotherJSFunction()
    。是的,但是如果我们将一个问题作为重复问题结束,则该问题应该完全由标记的问题回答。。对于新手来说,触发元素上的事件是一种选择,这一点可能并不明显。。我之所以提出这个问题,是因为以编程方式设置输入(这是这个问题的初衷)而不触发此事件实际上是对已接受答案的评论,但没有得到回复:)@ChiragRavindra我理解。我错过了以编程方式设置输入的部分。但一般来说,一个问题可以用多个重复项来结束。首先,输入元素的类型是隐藏的。其次,正如我在问题中提到的,值将由JavaScript函数设置,这可能需要一些时间。我放置的JavaScript流没有停止,这就是为什么我尝试使用while循环,以便流可以暂停,直到输入元素获得值。如果它是隐藏的,那么您不需要在那里创建表单,或者表单应该在生成隐藏值的JS函数中创建。如果创建值的函数在JS中,那么您可以调用隐藏值函数中的另一个函数。
    function hiddenValue(){
        var hvalue = "some_value";
        document.getElementById("hiddenForm").innerHTML = '<input type="hidden" value="' + hvalue + '" name="element" id="element" />';
    
        //Call another function:
        //Or you can pass the value to the function like thid:
        //doSomething(hvalue);
        doSomething();
    }
    
    function doSomething(hvalue = ''){
        //do in here
    }