【问题标题】:Get the next child element in javascript whose innerHTML is dynamic value获取javascript中innerHTML为动态值的下一个子元素
【发布时间】:2016-03-03 16:15:01
【问题描述】:

我在 php 代码中有一个带按钮的父元素和一个子 div。子 div 具有要动态分配的 innerHTML,并且也在输出中动态显示。

php代码:

$loc = $sdid;  /*get value according to some loop condition thus this value 
               changes as loop iterates*/        
echo '<div id="parent">
      <input type="button" id="investbutton" value="Invest" onclick="InputInvest()"> 
      <div id="child">'.$loc.'</div> 
      </div>';

现在孩子有 $loc 变量的动态值。

点击按钮后,InputInvest() 被调用:

function InputInvest()
{
   var x=0;
   x= document.getElementById("investbutton").nextSibling.innerHTML;

   document.write(x);   
}

但输出显示“未定义” 如何解决这个错误?

编辑: 上一个问题的解决方法:

x = document.getElementById("investbutton").nextElementSibling.innerHTML;

问题 2: 但是现在输出只有第一个 for 循环条件值..我认为 javascript 无法重新分配 x 因为值肯定会正确迭代...或者可能是输入标签无法动态获取值。 欢迎对此提出任何新建议!

【问题讨论】:

    标签: javascript php jquery html css


    【解决方案1】:

    尝试使用nextElementSibling

    x = document.getElementById("investbutton").nextElementSibling.innerHTML;
    

    因为换行符将被视为text node。而且它不会有一个名为innerHTML 的属性。

    DEMO


    .php中,

    <input type="button" class="investbutton" value="Invest" onclick="InputInvest(this)">
    

    JS

    function InputInvest(_this) {
       var x = _this.nextElementSibling.innerHTML;
       document.write(x);   
    }
    

    【讨论】:

    • 这确实解决了未定义的条件问题...但现在输出只有第一个 for 循环条件值..我认为 javascript 无法重新分配 x 因为值肯定会正确迭代...或者可能是输入标签无法动态取值
    • 为什么不使用 jQuery 获取所有兄弟姐妹,然后遍历它们或选择一个?
    • @AishwaryaR 你的 dom 中有多个 investbutton 吗?
    • @RajaprabhuAravindasamy 是的!假设每个循环都显示一个投资按钮及其旁边的一个值,然后访问相同的值。我什至尝试给投资按钮动态值的 value 属性,但它只显示任何投资按钮每次的第一个值。
    • @AishwaryaR 如果您有多个元素的相同 id,则在执行 document.getElementById("investbutton") 时,将始终选择第一个出现的整个元素。
    猜你喜欢
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 2011-12-02
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    相关资源
    最近更新 更多