Javascript 如何更改下一个跨距的文本
我的sharepoint网页中有以下标记,我无法控制这些标记:-Javascript 如何更改下一个跨距的文本,javascript,jquery,sharepoint,Javascript,Jquery,Sharepoint,我的sharepoint网页中有以下标记,我无法控制这些标记:- <span dir="none"> <select id="OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db_$DropDownChoice" title="Assign To Approver Required Field" class="ms-RadioText"> <option value="f**">f**</o
<span dir="none">
<select id="OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db_$DropDownChoice" title="Assign To Approver Required Field" class="ms-RadioText">
<option value="f**">f**</option>
<option value="m**">m**</option>
<option value="m**">m**</option>
<option value="t**">t**</option>
<option value=""></option>
</select>
</span>
<br>
<span class="ms-metadata">AddSourceHere</span>
现在,我试图找到一种使用javascript或jquery的方法,动态地将选择列表之后的范围文本从AddSourceHere更改为其他内容
我想做的是:-
选择具有特定id的选择列表
选择下一个跨度
更改跨距文本。
我试图找到一种使用javascript或jquery的方法,来动态更改选择列表后面的span文本
如果您的标题文本在性质上是唯一的
$("select[title='Assign To Approver Required Field']").nextAll('span').text('whatever you like')
假设ms元数据类只有一个跨度,并且/或者您只关心该类的第一个跨度 Javascript:
document.getElementsByClassName('ms-metadata')[0].innerHTML = 'something else';
jQuery:
$('.ms-metadata').first().text('something else');
您只需按id查找下拉列表,然后使用nextAll查找跨度 $'OrderAssignment to Approver_9002e96d-1276-4355-9a2a-0c565d8079db\\\\$DropDownChoice' .家长“span” .nextAll'span.ms元数据:eq0' .text一些新的值; f** m** m** t**
AddSourceHere根据您希望如何构造代码以及您愿意接受的依赖关系,可以采用多种方法来实现这一点。使用jQuery: 取决于跨度的类别 取决于以下选项: 您甚至可以将这两者结合起来,使之更具体:
$('select.ms-radioText').sibling('.ms-metadata').text('something else')
这些只是基于您向我们展示的内容的示例。还有其他一些方法,但哪种方法合适取决于代码的其余部分
编辑:
根据您更新的问题,这是做您需要的事情的最直接的方法,再次使用jQuery。将文本指定给变量newText注意,$字符带有两个向前斜杠,如\\$
您已经在注释中指出select元素上的ID可以信任,但是还有其他不应该更改的.ms元数据元素,因此我们不能仅依赖于该类 这其中有三、四个部分需要注意: 您的ID包含$,需要在jQuery选择器中作为\\$ 这些元素不是同级元素,因此下一步无法从到进行遍历。而是使用nextAll 使用eq:0或first防止下一个安装溢出到以下所有跨距中 您已经更改了HTML结构,因此请添加.parent以进行补偿 行动中的一个例子: $OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db\\\$DropDownChoice//选择元素 .parent//爬到父跨度 .nextAll'span.ms元数据:eq0'//获取以下第一个.ms元数据 .text“此文本已更改”//更改文本 f** AddSourceHere
这应该不会受到影响。请添加您的代码,我认为这与选择“$”.ms metadata.text'something'@DanielBeck有关。但是有很多元素都有。ms metadata类OK,这在问题中值得一提。你能相信上的ID不会更改吗?我尝试了你的方法,但是跨度的文本没有更新…我还检查了控制台,发现没有任何错误我已经更新,我没有注意到中间有一个br标记,所以你必须使用下一个安装。这也没有更改跨度的文本!!我不需要根据“选择列表”值进行更新。现在,您提到的标记与我显示的标记不100%兼容。。因为有一位家长span@DanielBeck是的,更正代码没有从我的sidesign正确粘贴。是的,自您第一次发布以来也发生了变化。是的,这是我的错,我直接从firefox F12复制了代码,不确定为什么会这样做,但我不想基于ms元数据选择。我想基于选择列表id,我可以保证它是唯一的。这将引发以下异常异常异常=错误:语法错误,无法识别的表达式:OrderAssigntoApprover9002E96D-1276-4355-9a2a-0c565d8079db_$DropDownChoice问题是ID中的“$”。您可以通过使用两个正斜杠对其进行转义来解决此问题。我已经更新了答案以反映这一点。现在您提到的标记与我显示的标记不完全兼容。。因为有一个家长span..你能再次检查我的原始代码吗..谢谢span在我写这个答案时不在问题中;是的,我错误地在问题中添加了代码。。所以我用正确的标记进行了编辑
$('select.ms-radioText').nextAll('span').text('something else')
$('select.ms-radioText').sibling('.ms-metadata').text('something else')
var selectID = "OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db_\\$DropDownChoice";
var newText = "something else";
$("#"+selectID).nextAll('span:eq(0)').text(newText);